bitsnap-react 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -3
- package/dist/CartProvider-F7ER3WSS.js +2 -0
- package/dist/CartProvider-F7ER3WSS.js.map +1 -0
- package/dist/CartProvider-N73XNL7S.mjs +2 -0
- package/dist/analytics.js +1 -1
- package/dist/analytics.js.map +1 -1
- package/dist/analytics.mjs +1 -1
- package/dist/catalog.js +1 -1
- package/dist/catalog.js.map +1 -1
- package/dist/catalog.mjs +1 -1
- package/dist/{chunk-ICFYSZTV.js → chunk-3A4YOO7Z.js} +2 -2
- package/dist/chunk-3A4YOO7Z.js.map +1 -0
- package/dist/{chunk-UCESDAEC.mjs → chunk-3DGHF373.mjs} +2 -2
- package/dist/chunk-5GMWRCHK.mjs +4 -0
- package/dist/chunk-5GMWRCHK.mjs.map +1 -0
- package/dist/{chunk-MLSKHOA3.js → chunk-6CUCRTIK.js} +2 -2
- package/dist/chunk-6CUCRTIK.js.map +1 -0
- package/dist/{chunk-DGUIG334.js → chunk-EWLOGFF2.js} +2 -2
- package/dist/chunk-EWLOGFF2.js.map +1 -0
- package/dist/chunk-GAVLY6RX.mjs +2 -0
- package/dist/chunk-GAVLY6RX.mjs.map +1 -0
- package/dist/{chunk-XTIY6PXH.js → chunk-IP4OOWZ6.js} +2 -2
- package/dist/chunk-IP4OOWZ6.js.map +1 -0
- package/dist/chunk-JSDGZ4NY.js.map +1 -1
- package/dist/{chunk-3QG7H2AI.mjs → chunk-K2EITRNW.mjs} +2 -2
- package/dist/{chunk-5R3WR22A.mjs → chunk-KH7DFTJY.mjs} +2 -2
- package/dist/chunk-KOYBZORL.js.map +1 -1
- package/dist/{chunk-E5DCEFI2.mjs → chunk-L6J6H73J.mjs} +2 -2
- package/dist/chunk-M4KEUK6I.js +2 -0
- package/dist/chunk-M4KEUK6I.js.map +1 -0
- package/dist/{chunk-QSIKRVZL.mjs → chunk-OC7YS3UY.mjs} +2 -2
- package/dist/chunk-TMBC2BHN.js +4 -0
- package/dist/chunk-TMBC2BHN.js.map +1 -0
- package/dist/{chunk-DF2IK2GN.js → chunk-TSJCVFOX.js} +2 -2
- package/dist/chunk-TSJCVFOX.js.map +1 -0
- package/dist/{chunk-6IACFTJR.js → chunk-UFQVOGBS.js} +2 -2
- package/dist/chunk-UFQVOGBS.js.map +1 -0
- package/dist/chunk-XIHGWNTS.js.map +1 -1
- package/dist/{chunk-FF2ICGFQ.mjs → chunk-YNGXQJPE.mjs} +2 -2
- package/dist/{chunk-FF2ICGFQ.mjs.map → chunk-YNGXQJPE.mjs.map} +1 -1
- package/dist/consent.js.map +1 -1
- package/dist/course.js +1 -1
- package/dist/course.js.map +1 -1
- package/dist/course.mjs +1 -1
- package/dist/embed/analytics.js +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +59 -2
- package/dist/index.d.ts +59 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/internal.js.map +1 -1
- package/dist/methods-ADH5XI4I.js +2 -0
- package/dist/methods-ADH5XI4I.js.map +1 -0
- package/dist/methods-BCR54EWX.mjs +2 -0
- package/dist/models.js.map +1 -1
- package/dist/returns.js +1 -1
- package/dist/returns.js.map +1 -1
- package/dist/returns.mjs +1 -1
- package/package.json +26 -51
- package/dist/CartProvider-XNFSUOCB.js +0 -2
- package/dist/CartProvider-XNFSUOCB.js.map +0 -1
- package/dist/CartProvider-YMJ7RFO4.mjs +0 -2
- package/dist/chunk-4BW6J7FP.js +0 -4
- package/dist/chunk-4BW6J7FP.js.map +0 -1
- package/dist/chunk-6IACFTJR.js.map +0 -1
- package/dist/chunk-DF2IK2GN.js.map +0 -1
- package/dist/chunk-DGUIG334.js.map +0 -1
- package/dist/chunk-ERL4Z7M7.js +0 -2
- package/dist/chunk-ERL4Z7M7.js.map +0 -1
- package/dist/chunk-ICFYSZTV.js.map +0 -1
- package/dist/chunk-MLSKHOA3.js.map +0 -1
- package/dist/chunk-P4Q5KXKS.mjs +0 -2
- package/dist/chunk-P4Q5KXKS.mjs.map +0 -1
- package/dist/chunk-PNTO3L2C.mjs +0 -4
- package/dist/chunk-PNTO3L2C.mjs.map +0 -1
- package/dist/chunk-XTIY6PXH.js.map +0 -1
- package/dist/methods-DDGOXLP6.mjs +0 -2
- package/dist/methods-RQPDIUUN.js +0 -2
- package/dist/methods-RQPDIUUN.js.map +0 -1
- /package/dist/{CartProvider-YMJ7RFO4.mjs.map → CartProvider-N73XNL7S.mjs.map} +0 -0
- /package/dist/{chunk-UCESDAEC.mjs.map → chunk-3DGHF373.mjs.map} +0 -0
- /package/dist/{chunk-3QG7H2AI.mjs.map → chunk-K2EITRNW.mjs.map} +0 -0
- /package/dist/{chunk-5R3WR22A.mjs.map → chunk-KH7DFTJY.mjs.map} +0 -0
- /package/dist/{chunk-E5DCEFI2.mjs.map → chunk-L6J6H73J.mjs.map} +0 -0
- /package/dist/{chunk-QSIKRVZL.mjs.map → chunk-OC7YS3UY.mjs.map} +0 -0
- /package/dist/{methods-DDGOXLP6.mjs.map → methods-BCR54EWX.mjs.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/emems/web/bitsnap/bitsnap/bitsnap-react/dist/chunk-6IACFTJR.js","../src/gen/proto/common/v1/address_pb.ts","../src/gen/proto/public/v1/public_api_pb.ts","../src/gen/proto/common/v1/gateway_pb.ts","../src/gen/proto/common/v1/push_notifications_pb.ts","../src/gen/proto/dashboard/v1/audiobooks_pb.ts","../src/gen/proto/common/v1/environment_pb.ts","../src/gen/proto/public/v1/returns_pb.ts","../src/rpc-provider.tsx","../src/gen/proto/dashboard/v1/notifications-NotificationsService_connectquery.ts","../src/gen/proto/dashboard/v1/notifications_pb.ts","../src/gen/proto/dashboard/v1/product_pb.ts","../src/gen/proto/public/v1/public_api-PublicApiService_connectquery.ts","../src/gen/proto/public/v1/returns-ReturnsService_connectquery.ts","../src/ui/button.tsx","../src/ui/input.tsx","../src/components/returns/color.ts","../src/ui/textarea.tsx","../src/ui/skeleton.tsx"],"names":["file_common_v1_address","fileDesc","AddressSchema","messageDesc","BillingAddressSchema","file_common_v1_gateway","file_common_v1_push_notifications","file_google_protobuf_timestamp","file_dashboard_v1_audiobooks","file_google_protobuf_empty","file_public_v1_public_api","PreOrderItemSchema","GetPreOrderDetailsRequestSchema","UserProductSchema","PublicApiService","serviceDesc","file_common_v1_environment","Environment","file_public_v1_returns","ReturnsService","notifications_NotificationsService_connectquery_exports","__export","createNotificationGroup","createNotificationGroupUser","createNotificationMessage","createNotificationMessageJob","createNotificationSetting","createNotificationUser","deleteNotificationGroup","deleteNotificationGroupUser","deleteNotificationMessage","deleteNotificationMessageJob","deleteNotificationSetting","deleteNotificationUser","getNotificationStats","getNotificationUserSettings","getProjectedRecipientCount","getSentNotificationMessages","getUserGroups","readNotificationGroupUsers","readNotificationGroups","readNotificationMessageJobs","readNotificationMessages","readNotificationProducts","readNotificationSetting","readNotificationUsers","updateNotificationGroup","updateNotificationGroupUser","updateNotificationMessage","updateNotificationMessageJob","updateNotificationSetting","updateNotificationUser","updateUserGroups","verifyUserEmail","file_dashboard_v1_product","file_dashboard_v1_notifications","FailureMessage","NotificationsService","public_api_PublicApiService_connectquery_exports","addPublicOrderComment","applePayValidateMerchant","authorizeOneClickPayment","clearAppStoreAccountToken","didBuyProduct","getAppStoreAccountToken","getAppStoreEntitlements","getAvailableCountForProduct","getGuestCatalog","getNotificationHistory","getNotificationSettings","getNotificationSettingsDetails","getOrder","getOrderForTestimonial","getOrderRetryUrl","getOrders","getPreOrderDetails","getPublicOrderDetails","getShopProducts","getStoreKitCatalog","getTestimonialUploadUrl","isOneClickPaymentAvailable","notifyUserAboutProductAvailability","pushEvent","pushSendDeviceToken","restoreAppStorePurchases","shouldShopProducts","shouldShowGuestCatalog","submitTestimonial","updateGlobalNotificationSettings","updateNotificationSettings","userPanelDeleteAccount","userPanelGetAudiobookDetails","userPanelGetAudiobookDetailsDownloadURLs","userPanelGetCourseDetails","userPanelGetFileDetails","userPanelGetProducts","userPanelGetTicketDetails","userPanelLogin","userPanelLoginWithCode","userPanelLogout","userPanelResolveProductAccess","verifyAppStorePurchase","returns_ReturnsService_connectquery_exports","createReturnRequest","exchangePanelSession","getMyReturn","getReturnableOrder","listMyReturns","listReturnOrders","startReturnSession","verifyReturnSession","currentFinalTransportHost","finalTransport","rpcProvider","useQuery","uq","useMutation","um","customHost","getTransportHost","HOST","createRpcTransport","host","createConnectTransport","clientHeaderInterceptor","input","init","transportsByHost","getRpcTransport","transport","RpcProvider","children","transportHost","queryClient","useState","QueryClient","jsx","TransportProvider","QueryClientProvider","buttonVariants","cva","Button","className","variant","size","asChild","props","Comp","Slot","cn","Input","type","parseHex","value","match","hex","char","parseRgb","channels","channel","linearize","readableForeground","color","trimmed","rgb","r","g","b","luminance","whiteContrast","blackContrast","brandColorTokens","foreground","Textarea","ref","Skeleton"],"mappings":"AAAA,qfAAgD,sDAAwC,yDCKlD,IAMzBA,CAAAA,CACXC,iCAAAA,4kBAAqlB,CAAA,CAyC1kBC,EAAAA,aACXC,oCAAAA,CAAYH,CAAwB,CAAC,CAAA,CA8C1BI,EAAAA,aACXD,oCAAAA,CAAYH,CAAwB,CAAC,CAAA,CC/FvC,ICIaK,CAAAA,CACXJ,iCAAAA,gcAAyc,CAAA,CCN3c,6CAE+C,IAMlCK,CAAAA,CACXL,iCAAAA,4yCAAS,CAA8yC,CAACM,mCAA8B,CAAC,CAAA,CCTz1C,IAQaC,CAAAA,CACXP,iCAAAA,62HAAS,CAA+2H,CAACM,mCAAAA,CAAgCE,+BAA0B,CAAC,CAAA,CHEt7H,IAMaC,CAAAA,CACXT,iCAAAA,kz4BAAS,CAAoz4B,CAACD,CAAAA,CAAwBK,CAAAA,CAAwBC,CAAAA,CAAmCE,CAAAA,CAA8BC,+BAAAA,CAA4BF,mCAA8B,CAAC,CAAA,CAmsBr+4B,IAAMI,EAAAA,CACXR,oCAAAA,CAAYO,CAA2B,EAAE,CAAA,CAqD9BE,EAAAA,aACXT,oCAAAA,CAAYO,CAA2B,EAAE,CAAA,CA05DpC,IAAMG,EAAAA,CACXV,oCAAAA,CAAYO,CAA2B,EAAE,CAAA,CA22BpC,IAAMI,CAAAA,CAsWXC,oCAAAA,CAAYL,CAA2B,CAAC,CAAA,CIx3H1C,IAKaM,CAAAA,CACXf,iCAAAA,oOAA6O,CAAA,CAKnOgB,CAAAA,aAAAA,CAAAA,CAAAA,EAAAA,CAIVA,CAAAA,CAAAA,CAAAA,CAAA,UAAA,CAAa,CAAA,CAAA,CAAb,YAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,IAAA,CAAO,CAAA,CAAA,CAAP,MAAA,CATUA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,CAAA,CAAA,CAAA,CCVZ,IAUaC,CAAAA,CACXjB,iCAAAA,6kLAAS,CAA+kL,CAACe,CAAAA,CAA4BT,mCAA8B,CAAC,CAAA,CA+zB/oL,IAAMY,CAAAA,CAkEXJ,oCAAAA,CAAYG,CAAwB,CAAC,CAAA,CCl5BvC,yDAIO,qDACgC,mDACU,uEACjB,ICPhCE,CAAAA,CAAA,CAAA,CAAA,CAAAC,gCAAAA,CAAAD,CAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAE,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAAA,CAAAA,CCMA,ICOaC,CAAAA,CACXrD,iCAAAA,yvsBAAS,CAA2vsB,CAACQ,+BAAAA,CAA4BF,mCAA8B,CAAC,CAAA,CDI3zsB,IAAMgD,EAAAA,CACXtD,iCAAAA,y/wBAAS,CAA2/wB,CAACM,mCAAAA,CAAgCE,+BAAAA,CAA4B6C,CAAAA,CAA2BhD,CAAiC,CAAC,CAAA,CAssEznxB,IAAKkD,EAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAIVA,CAAAA,CAAAA,CAAAA,CAAA,OAAA,CAAU,CAAA,CAAA,CAAV,SAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,iBAAA,CAAoB,CAAA,CAAA,CAApB,mBAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,8BAAA,CAAiC,CAAA,CAAA,CAAjC,gCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,CAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,CAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,CAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,4BAAA,CAA+B,CAAA,CAAA,CAA/B,8BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,6BAAA,CAAgC,CAAA,CAAA,CAAhC,+BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,CAAA,CAAA,CAAnC,kCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,CAAA,CAAA,CAAnC,kCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,EAAA,CAAA,CAAnC,kCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,2BAAA,CAA8B,EAAA,CAAA,CAA9B,6BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,4BAAA,CAA+B,EAAA,CAAA,CAA/B,8BAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,iCAAA,CAAoC,EAAA,CAAA,CAApC,mCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,qCAAA,CAAwC,EAAA,CAAA,CAAxC,uCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,8BAAA,CAAiC,EAAA,CAAA,CAAjC,gCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,mCAAA,CAAsC,EAAA,CAAA,CAAtC,qCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,sCAAA,CAAyC,EAAA,CAAA,CAAzC,wCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,sCAAA,CAAyC,EAAA,CAAA,CAAzC,wCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,sCAAA,CAAyC,EAAA,CAAA,CAAzC,wCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,kCAAA,CAAqC,EAAA,CAAA,CAArC,oCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,uCAAA,CAA0C,EAAA,CAAA,CAA1C,yCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,+BAAA,CAAkC,EAAA,CAAA,CAAlC,iCAAA,CAKAA,CAAAA,CAAAA,CAAAA,CAAA,gCAAA,CAAmC,EAAA,CAAA,CAAnC,kCAAA,CAzKUA,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,EAAA,CAAA,CAAA,CAAA,CAqLL,IAAMC,CAAAA,CAoQX1C,oCAAAA,EAAYwC,CAAiC,CAAC,CAAA,CDxoFzC,IAAM7B,EAAAA,CAA4B+B,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDb,EAAAA,CAA0Ba,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtDP,EAAAA,CAA4BO,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDzB,EAAAA,CAA4ByB,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDnC,EAAAA,CAA0BmC,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtDjB,EAAAA,CAAyBiB,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDX,EAAAA,CAA0BW,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtD7B,EAAAA,CAA0B6B,CAAAA,CAAqB,MAAA,CAAO,uBAAA,CAKtD9B,EAAAA,CAAyB8B,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDZ,EAAAA,CAAwBY,CAAAA,CAAqB,MAAA,CAAO,qBAAA,CAKpDN,EAAAA,CAAyBM,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDxB,EAAAA,CAAyBwB,CAAAA,CAAqB,MAAA,CAAO,sBAAA,CAKrDlC,EAAAA,CAA8BkC,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DlB,EAAAA,CAA6BkB,CAAAA,CAAqB,MAAA,CAAO,0BAAA,CAKzDV,EAAAA,CAA8BU,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1D5B,EAAAA,CAA8B4B,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DjC,EAAAA,CAA4BiC,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDf,EAAAA,CAA2Be,CAAAA,CAAqB,MAAA,CAAO,wBAAA,CAKvDpB,EAAAA,CAA8BoB,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DT,EAAAA,CAA4BS,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxD3B,EAAAA,CAA4B2B,CAAAA,CAAqB,MAAA,CAAO,yBAAA,CAKxDhC,EAAAA,CAA+BgC,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3DhB,EAAAA,CAA8BgB,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DR,EAAAA,CAA+BQ,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3D1B,EAAAA,CAA+B0B,CAAAA,CAAqB,MAAA,CAAO,4BAAA,CAK3Dd,EAAAA,CAA2Bc,CAAAA,CAAqB,MAAA,CAAO,wBAAA,CAOvDtB,EAAAA,CAA8BsB,CAAAA,CAAqB,MAAA,CAAO,2BAAA,CAK1DJ,EAAAA,CAAkBI,CAAAA,CAAqB,MAAA,CAAO,eAAA,CAK9CnB,EAAAA,CAAgBmB,CAAAA,CAAqB,MAAA,CAAO,aAAA,CAK5CL,EAAAA,CAAmBK,CAAAA,CAAqB,MAAA,CAAO,gBAAA,CAK/CrB,EAAAA,CAA6BqB,CAAAA,CAAqB,MAAA,CAAO,0BAAA,CAKzDvB,EAAAA,CAAuBuB,CAAAA,CAAqB,MAAA,CAAO,oBAAA,CGvKhE,IAAAC,CAAAA,CAAA,CAAA,CAAA,CAAArC,gCAAAA,CAAAqC,CAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,2BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,8BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,QAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,qBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,SAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,0BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,4BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,wCAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,uBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,yBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,cAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,eAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,6BAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAAA,CAAAA,CAUO,IAAM9B,EAAAA,CAAWzD,CAAAA,CAAiB,MAAA,CAAO,QAAA,CAKnC4D,EAAAA,CAAY5D,CAAAA,CAAiB,MAAA,CAAO,SAAA,CAKpC2D,EAAAA,CAAmB3D,CAAAA,CAAiB,MAAA,CAAO,gBAAA,CAK3CmF,EAAAA,CAAiBnF,CAAAA,CAAiB,MAAA,CAAO,cAAA,CAKzCoF,EAAAA,CAAyBpF,CAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDqF,EAAAA,CAAkBrF,CAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1C4E,EAAAA,CAAyB5E,CAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDiF,EAAAA,CAAuBjF,CAAAA,CAAiB,MAAA,CAAO,oBAAA,CAK/C6E,EAAAA,CAA+B7E,CAAAA,CAAiB,MAAA,CAAO,4BAAA,CAKvD8E,EAAAA,CAA2C9E,CAAAA,CAAiB,MAAA,CAAO,wCAAA,CAKnEgF,EAAAA,CAA0BhF,CAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDkF,EAAAA,CAA4BlF,CAAAA,CAAiB,MAAA,CAAO,yBAAA,CAKpD+E,EAAAA,CAA4B/E,CAAAA,CAAiB,MAAA,CAAO,yBAAA,CAKpDqE,EAAAA,CAAsBrE,CAAAA,CAAiB,MAAA,CAAO,mBAAA,CAK9CoE,EAAAA,CAAYpE,CAAAA,CAAiB,MAAA,CAAO,SAAA,CAOpCuE,EAAAA,CAAqBvE,CAAAA,CAAiB,MAAA,CAAO,kBAAA,CAK7CwE,EAAAA,CAAyBxE,CAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDqD,EAAAA,CAAkBrD,CAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1CsF,EAAAA,CAAgCtF,CAAAA,CAAiB,MAAA,CAAO,6BAAA,CAKxD+D,EAAAA,CAAkB/D,CAAAA,CAAiB,MAAA,CAAO,eAAA,CAK1CiD,EAAAA,CAAgBjD,CAAAA,CAAiB,MAAA,CAAO,aAAA,CAKxCkD,EAAAA,CAA0BlD,CAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDuF,EAAAA,CAAyBvF,CAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDmD,EAAAA,CAA0BnD,CAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDsE,EAAAA,CAA2BtE,CAAAA,CAAiB,MAAA,CAAO,wBAAA,CAKnDgD,EAAAA,CAA4BhD,CAAAA,CAAiB,MAAA,CAAO,yBAAA,CAKpDgE,EAAAA,CAAqBhE,CAAAA,CAAiB,MAAA,CAAO,kBAAA,CAO7CuD,EAAAA,CAA0BvD,CAAAA,CAAiB,MAAA,CAAO,uBAAA,CAKlDwD,EAAAA,CAAiCxD,CAAAA,CAAiB,MAAA,CAAO,8BAAA,CAKzD0E,EAAAA,CAAmC1E,CAAAA,CAAiB,MAAA,CAAO,gCAAA,CAK3D2E,EAAAA,CAA6B3E,CAAAA,CAAiB,MAAA,CAAO,0BAAA,CAKrDsD,EAAAA,CAAyBtD,CAAAA,CAAiB,MAAA,CAAO,sBAAA,CAOjDoD,EAAAA,CAA8BpD,CAAAA,CAAiB,MAAA,CAAO,2BAAA,CAOtDkE,EAAAA,CAA6BlE,CAAAA,CAAiB,MAAA,CAAO,0BAAA,CAKrD6D,EAAAA,CAAqB7D,CAAAA,CAAiB,MAAA,CAAO,kBAAA,CAK7C8C,EAAAA,CAA2B9C,CAAAA,CAAiB,MAAA,CAAO,wBAAA,CAKnD+C,EAAAA,CAA2B/C,CAAAA,CAAiB,MAAA,CAAO,wBAAA,CAKnDmE,EAAAA,CAAqCnE,CAAAA,CAAiB,MAAA,CAAO,kCAAA,CAO7D8D,EAAAA,CAAwB9D,CAAAA,CAAiB,MAAA,CAAO,qBAAA,CAKhD6C,EAAAA,CAAwB7C,CAAAA,CAAiB,MAAA,CAAO,qBAAA,CAOhD0D,EAAAA,CAAyB1D,CAAAA,CAAiB,MAAA,CAAO,sBAAA,CAKjDyE,EAAAA,CAAoBzE,CAAAA,CAAiB,MAAA,CAAO,iBAAA,CAK5CiE,EAAAA,CAA0BjE,CAAAA,CAAiB,MAAA,CAAO,uBAAA,CCxO/D,IAAAwF,CAAAA,CAAA,CAAA,CAAA,CAAAjF,gCAAAA,CAAAiF,CAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,WAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,aAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,gBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,kBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAA,mBAAA,CAAA,CAAA,CAAA,EAAAC,EAAAA,CAAAA,CAAAA,CAUO,IAAMD,EAAAA,CAAqB1F,CAAAA,CAAe,MAAA,CAAO,kBAAA,CAK3C2F,EAAAA,CAAsB3F,CAAAA,CAAe,MAAA,CAAO,mBAAA,CAK5CqF,EAAAA,CAAuBrF,CAAAA,CAAe,MAAA,CAAO,oBAAA,CAK7CyF,EAAAA,CAAmBzF,CAAAA,CAAe,MAAA,CAAO,gBAAA,CAKzCuF,EAAAA,CAAqBvF,CAAAA,CAAe,MAAA,CAAO,kBAAA,CAK3CoF,EAAAA,CAAsBpF,CAAAA,CAAe,MAAA,CAAO,mBAAA,CAK5CwF,EAAAA,CAAgBxF,CAAAA,CAAe,MAAA,CAAO,aAAA,CAKtCsF,EAAAA,CAActF,CAAAA,CAAe,MAAA,CAAO,WAAA,CLiD3C,+CAAA,IA9EF4F,CAAAA,CACAC,CAAAA,CAGJ,MAAA,CAAO,SAAA,CAAU,MAAA,CAAS,QAAA,CAAA,CAAY,CACpC,OAAO,IAAA,CAAK,QAAA,CAAS,CACvB,CAAA,CAEO,IAAMC,EAAAA,CAAc,CACzB,SAAA,CAAWvD,CAAAA,CACX,aAAA,CAAetC,CAAAA,CACf,OAAA,CAASkF,CACX,CAAA,CAEaY,EAAAA,aAAWC,sBAAAA,CACXC,EAAAA,aAAcC,yBAAAA,CAEvBC,EAAAA,CAOG,SAASC,EAAAA,CAAAA,CAA2B,CACzC,wBAAOD,EAAAA,SAAcE,oBACvB,CAEA,SAASC,CAAAA,CAAmBC,CAAAA,CAAyB,CACnD,OAAOC,gDAAAA,CACL,OAAA,CAASD,CAAAA,CAAO,UAAA,CAChB,eAAA,CAAiB,CAAA,CAAA,CACjB,YAAA,CAAc,CAACE,kBAAuB,CAAA,CAEtC,KAAA,CAAO,KAAA,CAAOC,CAAAA,CAAOC,CAAAA,CAAAA,EACZ,KAAA,CAAMD,CAAAA,CAAO,CAClB,GAAGC,CAAAA,CACH,SAAA,CAAW,CAAA,CAAA,CACX,WAAA,CAAa,SACf,CAAC,CAEL,CAAC,CACH,CAEA,IAAMC,CAAAA,CAAmB,IAAI,GAAA,CAMtB,SAASC,EAAAA,CAAgBN,CAAAA,CAAyB,CACvD,IAAIO,CAAAA,CAAYF,CAAAA,CAAiB,GAAA,CAAIL,CAAI,CAAA,CACzC,OAAIO,CAAAA,EAAa,IAAA,EAAA,CACfA,CAAAA,CAAYR,CAAAA,CAAmBC,CAAI,CAAA,CACnCK,CAAAA,CAAiB,GAAA,CAAIL,CAAAA,CAAMO,CAAS,CAAA,CAAA,CAE/BA,CACT,CAEO,IAAMC,EAAAA,CAER,CAAC,CAAE,QAAA,CAAAC,CAAS,CAAA,CAAA,EAAM,CACrB,IAAMC,CAAAA,CAAgBb,EAAAA,CAAiB,CAAA,CAAA,CAEnCP,CAAAA,EAAkB,IAAA,EAAQD,CAAAA,GAA8BqB,CAAAA,CAAAA,EAAAA,CAC1DrB,CAAAA,CAA4BqB,CAAAA,CAC5BpB,CAAAA,CAAiBS,CAAAA,CAAmBW,CAAa,CAAA,CAAA,CAGnD,GAAM,CAACC,CAAW,CAAA,CAAIC,6BAAAA,CACpB,CAAA,EACE,IAAIC,4BAAAA,CAAY,CACd,cAAA,CAAgB,CAAE,OAAA,CAAS,CAAE,SAAA,CAAW,GAAK,CAAE,CACjD,CAAC,CACL,CAAA,CAEA,OACEC,6BAAAA,+BAACC,CAAA,CAAkB,SAAA,CAAWzB,CAAAA,CAC5B,QAAA,CAAAwB,6BAAAA,+BAACE,CAAA,CAAoB,MAAA,CAAQL,CAAAA,CAAc,QAAA,CAAAF,CAAAA,CAAS,CAAA,CACtD,CAEJ,CAAA,CMhGA,kEAAuC,mCAClB,IAIfQ,EAAAA,CAAiBC,yCAAAA,6bACrB,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,wDAAA,CACT,WAAA,CACE,mJAAA,CACF,OAAA,CACE,uIAAA,CACF,SAAA,CACE,8DAAA,CACF,KAAA,CACE,sEAAA,CACF,IAAA,CAAM,iDACR,CAAA,CACA,IAAA,CAAM,CACJ,OAAA,CAAS,+BAAA,CACT,EAAA,CAAI,0FAAA,CACJ,EAAA,CAAI,+CAAA,CACJ,EAAA,CAAI,sCAAA,CACJ,IAAA,CAAM,QAAA,CACN,SAAA,CAAW,wDAAA,CACX,SAAA,CAAW,QAAA,CACX,SAAA,CAAW,SACb,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,SACR,CACF,CACF,CAAA,CAEA,SAASC,EAAAA,CAAO,CACd,SAAA,CAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,SAAA,CACV,IAAA,CAAAC,CAAAA,CAAO,SAAA,CACP,OAAA,CAAAC,CAAAA,CAAU,CAAA,CAAA,CACV,GAAGC,CACL,CAAA,CAGK,CACH,IAAMC,CAAAA,CAAOF,CAAAA,CAAUG,aAAAA,CAAK,IAAA,CAAO,QAAA,CAEnC,OACEZ,6BAAAA,CAACW,CAAA,CACC,WAAA,CAAU,QAAA,CACV,cAAA,CAAcJ,CAAAA,CACd,WAAA,CAAWC,CAAAA,CACX,SAAA,CAAWK,gCAAAA,EAAGV,CAAe,CAAE,OAAA,CAAAI,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAF,CAAU,CAAC,CAAC,CAAA,CACzD,GAAGI,CAAAA,CACN,CAEJ,CCvDI,SAFKI,EAAAA,CAAM,CAAE,SAAA,CAAAR,CAAAA,CAAW,IAAA,CAAAS,CAAAA,CAAM,GAAGL,CAAM,CAAA,CAAkC,CAC3E,OACEV,6BAAAA,OAAC,CAAA,CACC,IAAA,CAAMe,CAAAA,CACN,WAAA,CAAU,OAAA,CACV,SAAA,CAAWF,gCAAAA,4bACT,CACA,+EAAA,CACA,wGAAA,CACAP,CACF,CAAA,CACC,GAAGI,CAAAA,CACN,CAEJ,CClBA,SAASM,EAAAA,CAASC,CAAAA,CAAqD,CACrE,IAAMC,CAAAA,CAAQ,6CAAA,CAA8C,IAAA,CAAKD,CAAK,CAAA,CACtE,EAAA,CAAIC,CAAAA,EAAS,IAAA,CACX,MAAA,CAEF,IAAIC,CAAAA,CAAMD,CAAAA,CAAM,CAAC,CAAA,CACjB,OAAIC,CAAAA,CAAI,MAAA,EAAU,CAAA,EAAA,CAChBA,CAAAA,CAAMA,CAAAA,CACH,KAAA,CAAM,EAAE,CAAA,CACR,GAAA,CAAKC,CAAAA,EAASA,CAAAA,CAAOA,CAAI,CAAA,CACzB,IAAA,CAAK,EAAE,CAAA,CAAA,CAEL,CACL,QAAA,CAASD,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAAA,CAC5B,QAAA,CAASA,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAAA,CAC5B,QAAA,CAASA,CAAAA,CAAI,KAAA,CAAM,CAAA,CAAG,CAAC,CAAA,CAAG,EAAE,CAC9B,CACF,CAEA,SAASE,EAAAA,CAASJ,CAAAA,CAAqD,CACrE,IAAMC,CAAAA,CACJ,8EAAA,CAA+E,IAAA,CAC7ED,CACF,CAAA,CACF,EAAA,CAAIC,CAAAA,EAAS,IAAA,CACX,MAAA,CAEF,IAAMI,CAAAA,CAAW,CAACJ,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAA,CAAGA,CAAAA,CAAM,CAAC,CAAC,CAAA,CAAE,GAAA,CAAI,MAAM,CAAA,CAC1D,OAAOI,CAAAA,CAAS,KAAA,CAAOC,CAAAA,EAAYA,CAAAA,EAAW,GAAG,CAAA,CAC5CD,CAAAA,CACD,KAAA,CACN,CAEA,SAASE,EAAAA,CAAUD,CAAAA,CAAyB,CAC1C,IAAMN,CAAAA,CAAQM,CAAAA,CAAU,GAAA,CACxB,OAAON,CAAAA,EAAS,MAAA,CAAUA,CAAAA,CAAQ,KAAA,CAAA,CAAA,CAAUA,CAAAA,CAAQ,IAAA,CAAA,CAAS,KAAA,CAAA,EAAU,GACzE,CAOO,SAASQ,EAAAA,CAAmBC,CAAAA,CAAmC,CACpE,IAAMC,CAAAA,CAAUD,CAAAA,CAAM,IAAA,CAAK,CAAA,CACrBE,CAAAA,kBAAMZ,EAAAA,CAASW,CAAO,CAAA,SAAKN,EAAAA,CAASM,CAAO,GAAA,CACjD,EAAA,CAAIC,CAAAA,EAAO,IAAA,CACT,MAAA,CAEF,GAAM,CAACC,CAAAA,CAAGC,CAAAA,CAAGC,CAAC,CAAA,CAAIH,CAAAA,CAAI,GAAA,CAAIJ,EAAS,CAAA,CAC7BQ,CAAAA,CAAY,KAAA,CAASH,CAAAA,CAAI,KAAA,CAASC,CAAAA,CAAI,KAAA,CAASC,CAAAA,CAE/CE,CAAAA,CAAgB,IAAA,CAAA,CAAQD,CAAAA,CAAY,GAAA,CAAA,CACpCE,CAAAA,CAAAA,CAAiBF,CAAAA,CAAY,GAAA,CAAA,CAAQ,GAAA,CAC3C,OAAOC,CAAAA,EAAiBC,CAAAA,CAAgB,SAAA,CAAY,SACtD,CAMO,SAASC,EAAAA,CAAiBT,CAAAA,CAI/B,CACA,IAAMU,CAAAA,CAAaX,EAAAA,CAAmBC,CAAK,CAAA,CAC3C,MAAO,CACL,gBAAA,CAAkBA,CAAAA,CAClB,SAAA,CAAWA,CAAAA,CACX,GAAIU,CAAAA,EAAc,IAAA,CAAO,CAAE,gBAAA,CAAkBA,CAAW,CAAA,CAAI,CAAC,CAC/D,CACF,CCxEA,IAOMC,EAAAA,CAAiB,CAAA,CAAA,UAAA,CACrB,CAAC,CAAE,SAAA,CAAA/B,CAAAA,CAAW,GAAGI,CAAM,CAAA,CAAG4B,CAAAA,CAAAA,EAEtBtC,6BAAAA,UAAC,CAAA,CACC,SAAA,CAAWa,gCAAAA,mbACT,CACAP,CACF,CAAA,CACA,GAAA,CAAKgC,CAAAA,CACJ,GAAG5B,CAAAA,CACN,CAGN,CAAA,CACA2B,EAAAA,CAAS,WAAA,CAAc,UAAA,CCjBnB,SAFKE,EAAAA,CAAS,CAAE,SAAA,CAAAjC,CAAAA,CAAW,GAAGI,CAAM,CAAA,CAAgC,CACtE,OACEV,6BAAAA,KAAC,CAAA,CACC,WAAA,CAAU,UAAA,CACV,SAAA,CAAWa,gCAAAA,oCAAG,CAAsCP,CAAS,CAAA,CAC5D,GAAGI,CAAAA,CACN,CAEJ,CAAA,4VAAA","file":"/home/emems/web/bitsnap/bitsnap/bitsnap-react/dist/chunk-6IACFTJR.js","sourcesContent":[null,"// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file common/v1/address.proto (package common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file common/v1/address.proto.\n */\nexport const file_common_v1_address: GenFile = /*@__PURE__*/\n fileDesc(\"Chdjb21tb24vdjEvYWRkcmVzcy5wcm90bxIJY29tbW9uLnYxIocBCgdBZGRyZXNzEgwKBG5hbWUYASABKAkSDQoFbGluZTEYAiABKAkSEgoFbGluZTIYAyABKAlIAIgBARIMCgRjaXR5GAQgASgJEg8KB2NvdW50cnkYBSABKAkSFQoIemlwX2NvZGUYBiABKAlIAYgBAUIICgZfbGluZTJCCwoJX3ppcF9jb2RlIq4BCg5CaWxsaW5nQWRkcmVzcxIMCgRuYW1lGAEgASgJEg0KBWxpbmUxGAIgASgJEhIKBWxpbmUyGAMgASgJSACIAQESDAoEY2l0eRgEIAEoCRIPCgdjb3VudHJ5GAUgASgJEhUKCHppcF9jb2RlGAYgASgJSAGIAQESEwoGdGF4X2lkGAcgASgJSAKIAQFCCAoGX2xpbmUyQgsKCV96aXBfY29kZUIJCgdfdGF4X2lkQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw\");\n\n/**\n * @generated from message common.v1.Address\n */\nexport type Address = Message<\"common.v1.Address\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string line1 = 2;\n */\n line1: string;\n\n /**\n * @generated from field: optional string line2 = 3;\n */\n line2?: string;\n\n /**\n * @generated from field: string city = 4;\n */\n city: string;\n\n /**\n * @generated from field: string country = 5;\n */\n country: string;\n\n /**\n * @generated from field: optional string zip_code = 6;\n */\n zipCode?: string;\n};\n\n/**\n * Describes the message common.v1.Address.\n * Use `create(AddressSchema)` to create a new message.\n */\nexport const AddressSchema: GenMessage<Address> = /*@__PURE__*/\n messageDesc(file_common_v1_address, 0);\n\n/**\n * @generated from message common.v1.BillingAddress\n */\nexport type BillingAddress = Message<\"common.v1.BillingAddress\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: string line1 = 2;\n */\n line1: string;\n\n /**\n * @generated from field: optional string line2 = 3;\n */\n line2?: string;\n\n /**\n * @generated from field: string city = 4;\n */\n city: string;\n\n /**\n * @generated from field: string country = 5;\n */\n country: string;\n\n /**\n * @generated from field: optional string zip_code = 6;\n */\n zipCode?: string;\n\n /**\n * @generated from field: optional string tax_id = 7;\n */\n taxId?: string;\n};\n\n/**\n * Describes the message common.v1.BillingAddress.\n * Use `create(BillingAddressSchema)` to create a new message.\n */\nexport const BillingAddressSchema: GenMessage<BillingAddress> = /*@__PURE__*/\n messageDesc(file_common_v1_address, 1);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/public_api.proto (package public_api.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Address, BillingAddress } from \"../../common/v1/address_pb\";\nimport { file_common_v1_address } from \"../../common/v1/address_pb\";\nimport type { Gateway } from \"../../common/v1/gateway_pb\";\nimport { file_common_v1_gateway } from \"../../common/v1/gateway_pb\";\nimport type { NotificationEvent, NotificationGroupHowOften, PushNotificationDeviceToken } from \"../../common/v1/push_notifications_pb\";\nimport { file_common_v1_push_notifications } from \"../../common/v1/push_notifications_pb\";\nimport type { Audiobook as Audiobook$1 } from \"../../dashboard/v1/audiobooks_pb\";\nimport { file_dashboard_v1_audiobooks } from \"../../dashboard/v1/audiobooks_pb\";\nimport type { Empty, EmptySchema, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file public/v1/public_api.proto.\n */\nexport const file_public_v1_public_api: GenFile = /*@__PURE__*/\n fileDesc(\"ChpwdWJsaWMvdjEvcHVibGljX2FwaS5wcm90bxINcHVibGljX2FwaS52MSI2Ch5HZXRBcHBTdG9yZUFjY291bnRUb2tlblJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJIjwKH0dldEFwcFN0b3JlQWNjb3VudFRva2VuUmVzcG9uc2USGQoRYXBwX2FjY291bnRfdG9rZW4YASABKAkiaQodVmVyaWZ5QXBwU3RvcmVQdXJjaGFzZVJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhoKEnNpZ25lZF90cmFuc2FjdGlvbhgCIAEoCRIWCg50cmFuc2FjdGlvbl9pZBgDIAEoCSJcCh5WZXJpZnlBcHBTdG9yZVB1cmNoYXNlUmVzcG9uc2USEQoJZnVsZmlsbGVkGAEgASgIEhIKCnByb2R1Y3RfaWQYAiABKAkSEwoLZW52aXJvbm1lbnQYAyABKAkiNgoeR2V0QXBwU3RvcmVFbnRpdGxlbWVudHNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCSL5AQofR2V0QXBwU3RvcmVFbnRpdGxlbWVudHNSZXNwb25zZRJQCgxlbnRpdGxlbWVudHMYASADKAsyOi5wdWJsaWNfYXBpLnYxLkdldEFwcFN0b3JlRW50aXRsZW1lbnRzUmVzcG9uc2UuRW50aXRsZW1lbnQagwEKC0VudGl0bGVtZW50EhIKCnByb2R1Y3RfaWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhMKC2Vudmlyb25tZW50GAMgASgJEhoKEmZ1bGZpbGxtZW50X3N0YXR1cxgEIAEoCRIfChdvcmlnaW5hbF90cmFuc2FjdGlvbl9pZBgFIAEoCSJUCh9SZXN0b3JlQXBwU3RvcmVQdXJjaGFzZXNSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIbChNzaWduZWRfdHJhbnNhY3Rpb25zGAIgAygJIpgCCiBSZXN0b3JlQXBwU3RvcmVQdXJjaGFzZXNSZXNwb25zZRJRCghwcm9kdWN0cxgBIAMoCzI/LnB1YmxpY19hcGkudjEuUmVzdG9yZUFwcFN0b3JlUHVyY2hhc2VzUmVzcG9uc2UuUmVzdG9yZWRQcm9kdWN0EiYKHmZhbWlseV9zaGFyaW5nX3Jldmlld19yZXF1aXJlZBgCIAEoCBp5Cg9SZXN0b3JlZFByb2R1Y3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIfChdvcmlnaW5hbF90cmFuc2FjdGlvbl9pZBgCIAEoCRIOCgZzdGF0dXMYAyABKAkSDgoGcmVhc29uGAQgASgJEhEKCWZ1bGZpbGxlZBgFIAEoCCI4CiBDbGVhckFwcFN0b3JlQWNjb3VudFRva2VuUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkiMQoZR2V0U3RvcmVLaXRDYXRhbG9nUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAki9QEKGkdldFN0b3JlS2l0Q2F0YWxvZ1Jlc3BvbnNlEhcKD3BheXdhbGxfZW5hYmxlZBgBIAEoCBJDCghwcm9kdWN0cxgCIAMoCzIxLnB1YmxpY19hcGkudjEuR2V0U3RvcmVLaXRDYXRhbG9nUmVzcG9uc2UuUHJvZHVjdBp5CgdQcm9kdWN0EhgKEHN0b3JlX3Byb2R1Y3RfaWQYASABKAkSGwoTaW50ZXJuYWxfcHJvZHVjdF9pZBgCIAEoCRIMCgRraW5kGAMgASgJEhQKDGRpc3BsYXlfbmFtZRgEIAEoCRITCgtkZXNjcmlwdGlvbhgFIAEoCSJLCiBVc2VyUGFuZWxHZXRDb3Vyc2VEZXRhaWxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJIncKIVVzZXJQYW5lbEdldENvdXJzZURldGFpbHNSZXNwb25zZRIWCgxyZWRpcmVjdF91cmwYASABKAlIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAQggKBnJlc3VsdCJ6ChBHZXRPcmRlcnNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSFAoMYWNjZXNzX3Rva2VuGAIgASgJEhIKBWxpbWl0GAMgASgFSACIAQESEwoGb2Zmc2V0GAQgASgFSAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQigwIKEUdldE9yZGVyc1Jlc3BvbnNlEj0KBm9yZGVycxgBIAMoCzItLnB1YmxpY19hcGkudjEuR2V0T3JkZXJzUmVzcG9uc2UuT3JkZXJTdW1tYXJ5EhMKC3RvdGFsX2NvdW50GAIgASgFGpkBCgxPcmRlclN1bW1hcnkSCgoCaWQYASABKAkSDgoGc3RhdHVzGAIgASgJEhQKDHRvdGFsX2Ftb3VudBgDIAEoBRIQCghjdXJyZW5jeRgEIAEoCRIuCgpjcmVhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIVCg1jdXN0b21lcl9uYW1lGAYgASgJIjcKIUlzT25lQ2xpY2tQYXltZW50QXZhaWxhYmxlUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJIsUCCiJJc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlc3BvbnNlEhIKCmlucG9zdF9wYXkYASABKAgSEQoJYXBwbGVfcGF5GAIgASgIEhIKCmdvb2dsZV9wYXkYAyABKAgSYQoRZ29vZ2xlX3BheV9jb25maWcYBCABKAsyQS5wdWJsaWNfYXBpLnYxLklzT25lQ2xpY2tQYXltZW50QXZhaWxhYmxlUmVzcG9uc2UuR29vZ2xlUGF5Q29uZmlnSACIAQEaawoPR29vZ2xlUGF5Q29uZmlnEhMKC21lcmNoYW50X2lkGAEgASgJEhUKDW1lcmNoYW50X25hbWUYAiABKAkSDwoHZ2F0ZXdheRgDIAEoCRIbChNnYXRld2F5X21lcmNoYW50X2lkGAQgASgJQhQKEl9nb29nbGVfcGF5X2NvbmZpZyLRAwofT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVxdWVzdBJHCgdnYXRld2F5GAEgASgOMjYucHVibGljX2FwaS52MS5PbmVDbGlja0F1dGhvcml6ZVBheW1lbnRSZXF1ZXN0LkdhdGV3YXkSEwoLcGF5bWVudERhdGEYAiABKAkSFQoNcGF5bWVudE1ldGhvZBgDIAEoCRIdChV0cmFuc2FjdGlvbklkZW50aWZpZXIYBCABKAkSNwoFb3JkZXIYBSABKAsyKC5wdWJsaWNfYXBpLnYxLkdldFByZU9yZGVyRGV0YWlsc1JlcXVlc3QSMQoQc2hpcHBpbmdfYWRkcmVzcxgGIAEoCzISLmNvbW1vbi52MS5BZGRyZXNzSACIAQESNwoPYmlsbGluZ19hZGRyZXNzGAcgASgLMhkuY29tbW9uLnYxLkJpbGxpbmdBZGRyZXNzSAGIAQESFQoIbWV0YWRhdGEYCCABKAlIAogBASIoCgdHYXRld2F5Eg0KCUFQUExFX1BBWRAAEg4KCkdPT0dMRV9QQVkQAUITChFfc2hpcHBpbmdfYWRkcmVzc0ISChBfYmlsbGluZ19hZGRyZXNzQgsKCV9tZXRhZGF0YSKkAQogT25lQ2xpY2tBdXRob3JpemVQYXltZW50UmVzcG9uc2USEgoKaXNfc3VjY2VzcxgBIAEoCBIUCgxyZWRpcmVjdF91cmwYAiABKAkSFgoOdHJhbnNhY3Rpb25faWQYAyABKAkSIwoWYXBwbGVfcGF5X3RyYWNraW5nX3VybBgEIAEoCUgAiAEBQhkKF19hcHBsZV9wYXlfdHJhY2tpbmdfdXJsIiwKDFByZU9yZGVySXRlbRIKCgJpZBgBIAEoCRIQCghxdWFudGl0eRgCIAEoBSLVAgoZR2V0UHJlT3JkZXJEZXRhaWxzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEioKBWl0ZW1zGAIgAygLMhsucHVibGljX2FwaS52MS5QcmVPcmRlckl0ZW0SGQoMY291bnRyeV9jb2RlGAMgASgJSACIAQESFgoJcG9zdF9jb2RlGAQgASgJSAGIAQESFwoKY291cG9uQ29kZRgFIAEoCUgCiAEBEhIKBWVtYWlsGAYgASgJSAOIAQESJQoYc2VsZWN0ZWRfZGVsaXZlcnlfbWV0aG9kGAcgASgJSASIAQESEgoFcGhvbmUYCCABKAlIBYgBAUIPCg1fY291bnRyeV9jb2RlQgwKCl9wb3N0X2NvZGVCDQoLX2NvdXBvbkNvZGVCCAoGX2VtYWlsQhsKGV9zZWxlY3RlZF9kZWxpdmVyeV9tZXRob2RCCAoGX3Bob25lIqwBCg5EZWxpdmVyeU1ldGhvZBIKCgJpZBgBIAEoCRIOCgZhbW91bnQYAiABKAUSDAoEbmFtZRgDIAEoCRIYCgtkZXNjcmlwdGlvbhgEIAEoCUgAiAEBEhUKCG1pbl9kYXlzGAUgASgFSAGIAQESFQoIbWF4X2RheXMYBiABKAVIAogBAUIOCgxfZGVzY3JpcHRpb25CCwoJX21pbl9kYXlzQgsKCV9tYXhfZGF5cyKzAgoaR2V0UHJlT3JkZXJEZXRhaWxzUmVzcG9uc2USLgoHbWV0aG9kcxgBIAMoCzIdLnB1YmxpY19hcGkudjEuRGVsaXZlcnlNZXRob2QSFwoKY291cG9uQ29kZRgCIAEoCUgAiAEBEiUKGHNlbGVjdGVkX2RlbGl2ZXJ5X21ldGhvZBgDIAEoCUgBiAEBEhkKDHRvdGFsX2Ftb3VudBgEIAEoBUgCiAEBEhkKDGNvdXBvbl92YWx1ZRgFIAEoBUgDiAEBEhAKCGN1cnJlbmN5GAYgASgJEg8KB2NvdW50cnkYByABKAlCDQoLX2NvdXBvbkNvZGVCGwoZX3NlbGVjdGVkX2RlbGl2ZXJ5X21ldGhvZEIPCg1fdG90YWxfYW1vdW50Qg8KDV9jb3Vwb25fdmFsdWUiYgopTm90aWZ5VXNlckFib3V0UHJvZHVjdEF2YWlsYWJpbGl0eVJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJEg0KBWVtYWlsGAMgASgJIk0KH0FwcGxlUGF5VmFsaWRhdGVNZXJjaGFudFJlcXVlc3QSFgoOdmFsaWRhdGlvbl91cmwYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCSI8CiBBcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRSZXNwb25zZRIYChBtZXJjaGFudF9zZXNzaW9uGAEgASgJIk4KIkdldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxhbGxfdmFyaWFudHMYAiADKAkiwgQKI0dldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlc3BvbnNlEmEKEGF2YWlsYWJsZV9jb3VudHMYASADKAsyRy5wdWJsaWNfYXBpLnYxLkdldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlc3BvbnNlLkF2YWlsYWJsZUNvdW50c0VudHJ5EkwKBWVycm9yGAIgASgOMjgucHVibGljX2FwaS52MS5HZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3RSZXNwb25zZS5FcnJvckgAiAEBGlEKGEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdBIjChthdmFpbGFibGVfcXVhbnRpdHlfdG9fb3JkZXIYASABKAUSEAoIY2FuX2JhY2sYAiABKAgagwEKFEF2YWlsYWJsZUNvdW50c0VudHJ5EgsKA2tleRgBIAEoCRJaCgV2YWx1ZRgCIAEoCzJLLnB1YmxpY19hcGkudjEuR2V0QXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0UmVzcG9uc2UuQXZhaWxhYmxlQ291bnRGb3JQcm9kdWN0OgI4ASKGAQoFRXJyb3ISEQoNRVJST1JfVU5LTk9XThAAEhsKF0VSUk9SX1BST0pFQ1RfTk9UX0ZPVU5EEAESHwobRVJST1JfUFJPRFVDVF9OT1RfQVZBSUxBQkxFEAISLAooRVJST1JfUFJPRFVDVF9OT1RfQVZBSUxBQkxFX0JVVF9DQU5fQkFDSxADQggKBl9lcnJvciI1Ch1Vc2VyUGFuZWxEZWxldGVBY2NvdW50UmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkiQAoURGlkQnV5UHJvZHVjdFJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnByb2R1Y3RfaWQYAiABKAki/gEKIVVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRJNCg1tb2RpZmljYXRpb25zGAMgAygLMjYucHVibGljX2FwaS52MS5VcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QuR3JvdXASOgoPZW5hYmxlZF9tZXRob2RzGAQgAygOMiEucHVibGljX2FwaS52MS5Ob3RpZmljYXRpb25NZXRob2QaJAoFR3JvdXASCgoCaWQYASABKAkSDwoHZW5hYmxlZBgCIAEoCCJRCidVcGRhdGVHbG9iYWxOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhAKCGlzX211dGVkGAIgASgIIlEKJUdldE5vdGlmaWNhdGlvblNldHRpbmdzRGV0YWlsc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkioQEKEU5vdGlmaWNhdGlvbkdyb3VwEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIPCgdlbmFibGVkGAQgASgIEjcKCWhvd19vZnRlbhgFIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuQg4KDF9kZXNjcmlwdGlvbiKxAgomR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NEZXRhaWxzUmVzcG9uc2USEgoKcHJvamVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEi8KBXRoZW1lGAMgASgLMhsucHVibGljX2FwaS52MS5Qcm9qZWN0VGhlbWVIAIgBARI8ChFhdmFpbGFibGVfbWV0aG9kcxgEIAMoDjIhLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uTWV0aG9kEjoKD2VuYWJsZWRfbWV0aG9kcxgFIAMoDjIhLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uTWV0aG9kEjAKBmdyb3VwcxgGIAMoCzIgLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uR3JvdXBCCAoGX3RoZW1lIkMKHkdldE5vdGlmaWNhdGlvblNldHRpbmdzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSCwoDYWxsGAIgASgIIvACCh9HZXROb3RpZmljYXRpb25TZXR0aW5nc1Jlc3BvbnNlEkgKCHByb2plY3RzGAEgAygLMjYucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc1Jlc3BvbnNlLlByb2plY3QSEAoIaXNfbXV0ZWQYAiABKAgapQEKB1Byb2plY3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRJFCgZzdGF0dXMYAyABKA4yNS5wdWJsaWNfYXBpLnYxLkdldE5vdGlmaWNhdGlvblNldHRpbmdzUmVzcG9uc2UuU3RhdHVzEi8KBXRoZW1lGAQgASgLMhsucHVibGljX2FwaS52MS5Qcm9qZWN0VGhlbWVIAIgBAUIICgZfdGhlbWUiSQoGU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEhIKDlNUQVRVU19FTkFCTEVEEAESEwoPU1RBVFVTX0RJU0FCTEVEEAIizAEKHUdldE5vdGlmaWNhdGlvbkhpc3RvcnlSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIXCgpwcm9qZWN0X2lkGAIgASgJSACIAQESMgoHbWV0aG9kcxgDIAMoDjIhLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uTWV0aG9kEhEKCXBhZ2Vfc2l6ZRgEIAEoBRIXCgpwYWdlX3Rva2VuGAUgASgJSAGIAQFCDQoLX3Byb2plY3RfaWRCDQoLX3BhZ2VfdG9rZW4i6wMKF05vdGlmaWNhdGlvbkhpc3RvcnlJdGVtEgoKAmlkGAEgASgJEhcKD25vdGlmaWNhdGlvbl9pZBgCIAEoCRIxCgZtZXRob2QYAyABKA4yIS5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbk1ldGhvZBIrCgdzZW50X2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0aXRsZRgFIAEoCRIVCghzdWJ0aXRsZRgGIAEoCUgAiAEBEhQKB2NvbnRlbnQYByABKAlIAYgBARIWCglpbWFnZV91cmwYCCABKAlIAogBARIVCghvcGVuX3VybBgKIAEoCUgDiAEBEj0KBnNlbmRlchgJIAEoCzItLnB1YmxpY19hcGkudjEuTm90aWZpY2F0aW9uSGlzdG9yeUl0ZW0uU2VuZGVyGm0KBlNlbmRlchISCgpwcm9qZWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCRIvCgV0aGVtZRgDIAEoCzIbLnB1YmxpY19hcGkudjEuUHJvamVjdFRoZW1lSACIAQFCCAoGX3RoZW1lQgsKCV9zdWJ0aXRsZUIKCghfY29udGVudEIMCgpfaW1hZ2VfdXJsQgsKCV9vcGVuX3VybCKRAQoeR2V0Tm90aWZpY2F0aW9uSGlzdG9yeVJlc3BvbnNlEj0KDW5vdGlmaWNhdGlvbnMYASADKAsyJi5wdWJsaWNfYXBpLnYxLk5vdGlmaWNhdGlvbkhpc3RvcnlJdGVtEhwKD25leHRfcGFnZV90b2tlbhgCIAEoCUgAiAEBQhIKEF9uZXh0X3BhZ2VfdG9rZW4iQQopVXNlclBhbmVsUHVzaEdldEF2YWlsYWJsZUNvbXBhbmllc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJIusCCipVc2VyUGFuZWxQdXNoR2V0QXZhaWxhYmxlQ29tcGFuaWVzUmVzcG9uc2USVAoJY29tcGFuaWVzGAEgAygLMkEucHVibGljX2FwaS52MS5Vc2VyUGFuZWxQdXNoR2V0QXZhaWxhYmxlQ29tcGFuaWVzUmVzcG9uc2UuQ29tcGFueRpxCgVHcm91cBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESFgoJaG93X29mdGVuGAQgASgJSAGIAQFCDgoMX2Rlc2NyaXB0aW9uQgwKCl9ob3dfb2Z0ZW4adAoHQ29tcGFueRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEk8KBmdyb3VwcxgDIAMoCzI/LnB1YmxpY19hcGkudjEuVXNlclBhbmVsUHVzaEdldEF2YWlsYWJsZUNvbXBhbmllc1Jlc3BvbnNlLkdyb3VwIjAKGlNob3VsZFNob3BQcm9kdWN0c1Jlc3BvbnNlEhIKCmlzX3Zpc2libGUYASABKAgiNAoeU2hvdWxkU2hvd0d1ZXN0Q2F0YWxvZ1Jlc3BvbnNlEhIKCmlzX3Zpc2libGUYASABKAgihgEKE0d1ZXN0Q2F0YWxvZ1Byb2R1Y3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIMCgRuYW1lGAIgASgJEhcKD2NvdmVyX2ltYWdlX3VybBgDIAEoCRI0Cgxwcm9kdWN0X3R5cGUYBCABKA4yHi5wdWJsaWNfYXBpLnYxLlVzZXJQcm9kdWN0VHlwZSJPChdHZXRHdWVzdENhdGFsb2dSZXNwb25zZRI0Cghwcm9kdWN0cxgBIAMoCzIiLnB1YmxpY19hcGkudjEuR3Vlc3RDYXRhbG9nUHJvZHVjdCKGAQokVXNlclBhbmVsUmVzb2x2ZVByb2R1Y3RBY2Nlc3NSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJEjQKDHByb2R1Y3RfdHlwZRgDIAEoDjIeLnB1YmxpY19hcGkudjEuVXNlclByb2R1Y3RUeXBlIucBCiVVc2VyUGFuZWxSZXNvbHZlUHJvZHVjdEFjY2Vzc1Jlc3BvbnNlEksKBnN0YXR1cxgBIAEoDjI7LnB1YmxpY19hcGkudjEuVXNlclBhbmVsUmVzb2x2ZVByb2R1Y3RBY2Nlc3NSZXNwb25zZS5TdGF0dXMSFgoJYWNjZXNzX2lkGAIgASgJSACIAQEiSwoGU3RhdHVzEhYKElNUQVRVU19VTlNQRUNJRklFRBAAEgkKBU9XTkVEEAESDQoJTk9UX09XTkVEEAISDwoLVU5BVkFJTEFCTEUQA0IMCgpfYWNjZXNzX2lkIkQKFkdldFNob3BQcm9kdWN0c1JlcXVlc3QSGQoMYWNjZXNzX3Rva2VuGAEgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiLYAQoXR2V0U2hvcFByb2R1Y3RzUmVzcG9uc2USQAoIcHJvZHVjdHMYBSADKAsyLi5wdWJsaWNfYXBpLnYxLkdldFNob3BQcm9kdWN0c1Jlc3BvbnNlLlByb2R1Y3QaewoHUHJvZHVjdBIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhEKCWltYWdlX3VybBgDIAEoCRINCgVwcmljZRgEIAEoCRIeChFpc19hbHJlYWR5X2JvdWdodBgFIAEoCEgAiAEBQhQKEl9pc19hbHJlYWR5X2JvdWdodCLUAQofVXNlclBhbmVsR2V0RmlsZURldGFpbHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRGaWxlRGV0YWlsc1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaKwoGUmVzdWx0EhIKCnByb2plY3RfaWQYASABKAkSDQoFZmlsZXMYAiADKAlCCAoGcmVzdWx0IkkKHlVzZXJQYW5lbEdldEZpbGVEZXRhaWxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJIvkCCiFVc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzUmVzcG9uc2USSgoHc3VjY2VzcxgBIAEoCzI3LnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1Jlc3BvbnNlLlJlc3VsdEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSAAaywEKBlJlc3VsdBISCgpwcm9qZWN0X2lkGAEgASgJEhIKCnRpY2tldF91cmwYAiABKAkSFAoMcHJvZHVjdF9uYW1lGAMgASgJEhkKEXByb2R1Y3RfaW1hZ2VfdXJsGAQgASgJEh4KEWdvb2dsZV93YWxsZXRfdXJsGAUgASgJSACIAQESHQoQYXBwbGVfd2FsbGV0X3VybBgGIAEoCUgBiAEBQhQKEl9nb29nbGVfd2FsbGV0X3VybEITChFfYXBwbGVfd2FsbGV0X3VybEIICgZyZXN1bHQiSwogVXNlclBhbmVsR2V0VGlja2V0RGV0YWlsc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhEKCWFjY2Vzc19pZBgCIAEoCSLPBAowVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc0Rvd25sb2FkVVJMc1Jlc3BvbnNlElkKB3N1Y2Nlc3MYASABKAsyRi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXNwb25zZS5SZXN1bHRIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAGpoBChhBdWRpb2Jvb2tEb3dubG9hZERldGFpbHMSEgoKY2hhcHRlcl9pZBgBIAEoCRISCgpwdWJsaWNfdXJsGAIgASgJEh0KEGRvd25sb2FkYWJsZV91cmwYAyABKAlIAIgBARIVCghkdXJhdGlvbhgEIAEoBUgBiAEBQhMKEV9kb3dubG9hZGFibGVfdXJsQgsKCV9kdXJhdGlvbhrmAQoGUmVzdWx0EnwKGmF1ZGlvYm9va19kb3dubG9hZF9kZXRhaWxzGAEgAygLMlgucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzRG93bmxvYWRVUkxzUmVzcG9uc2UuQXVkaW9ib29rRG93bmxvYWREZXRhaWxzEjMKJmlzX2F2YWlsYWJsZV90b19kb3dubG9hZF9pbl9tb2JpbGVfYXBwGAIgASgISACIAQFCKQonX2lzX2F2YWlsYWJsZV90b19kb3dubG9hZF9pbl9tb2JpbGVfYXBwQggKBnJlc3VsdCKCAQovVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc0Rvd25sb2FkVVJMc1JlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJEhEKCWFjY2Vzc19pZBgCIAEoCRIXCgppc19icm93c2VyGAMgASgISACIAQFCDQoLX2lzX2Jyb3dzZXIimwEKJFVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNSZXNwb25zZRI3CglhdWRpb2Jvb2sYASABKAsyIi5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5BdWRpb2Jvb2tIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAQggKBnJlc3VsdCJOCiNVc2VyUGFuZWxHZXRBdWRpb2Jvb2tEZXRhaWxzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAkSEQoJYWNjZXNzX2lkGAIgASgJIjMKG1VzZXJQYW5lbEdldFByb2R1Y3RzUmVxdWVzdBIUCgxhY2Nlc3NfdG9rZW4YASABKAki2QEKHFVzZXJQYW5lbEdldFByb2R1Y3RzUmVzcG9uc2USRQoHc3VjY2VzcxgBIAEoCzIyLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0UHJvZHVjdHNSZXNwb25zZS5SZXN1bHRIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAGjYKBlJlc3VsdBIsCghwcm9kdWN0cxgBIAMoCzIaLnB1YmxpY19hcGkudjEuVXNlclByb2R1Y3RCCAoGcmVzdWx0Ii4KFlVzZXJQYW5lbExvZ291dFJlcXVlc3QSFAoMYWNjZXNzX3Rva2VuGAEgASgJIrQBCh5Vc2VyUGFuZWxMb2dpbldpdGhDb2RlUmVzcG9uc2USFgoMYWNjZXNzX3Rva2VuGAEgASgJSAASMAoHZmFpbHVyZRgCIAEoDjIdLnB1YmxpY19hcGkudjEuRmFpbHVyZU1lc3NhZ2VIABISCgVlbWFpbBgDIAEoCUgBiAEBEhQKB3VzZXJfaWQYBCABKAlIAogBAUIICgZyZXN1bHRCCAoGX2VtYWlsQgoKCF91c2VyX2lkIi0KHVVzZXJQYW5lbExvZ2luV2l0aENvZGVSZXF1ZXN0EgwKBGNvZGUYASABKAUi8gEKFlVzZXJQYW5lbExvZ2luUmVzcG9uc2USPwoHc3VjY2VzcxgBIAEoCzIsLnB1YmxpY19hcGkudjEuVXNlclBhbmVsTG9naW5SZXNwb25zZS5SZXN1bHRIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAGlsKBlJlc3VsdBIQCghyZXRyeV9pbhgBIAEoBRI/Cg9kZWxpdmVyeV9tZXRob2QYAiABKA4yJi5wdWJsaWNfYXBpLnYxLkxvZ2luQ29kZURlbGl2ZXJ5TWV0aG9kQggKBnJlc3VsdCKfAQoVVXNlclBhbmVsTG9naW5SZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEh8KEnJlZ3VsYXRpb25zX2FjY2VwdBgCIAEoCEgAiAEBEj8KD2RlbGl2ZXJ5X21ldGhvZBgDIAEoDjImLnB1YmxpY19hcGkudjEuTG9naW5Db2RlRGVsaXZlcnlNZXRob2RCFQoTX3JlZ3VsYXRpb25zX2FjY2VwdCI5ChdHZXRPcmRlclJldHJ5VXJsUmVxdWVzdBIKCgJpZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIr8BChhHZXRPcmRlclJldHJ5VXJsUmVzcG9uc2USPgoDdXJsGAEgASgLMi8ucHVibGljX2FwaS52MS5HZXRPcmRlclJldHJ5VXJsUmVzcG9uc2UuU3VjY2Vzc0gAEhEKB2ZhaWx1cmUYAiABKAlIABpGCgdTdWNjZXNzEgsKA3VybBgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIICgZyZXN1bHQiMQoPR2V0T3JkZXJSZXF1ZXN0EgoKAmlkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkifAoQR2V0T3JkZXJSZXNwb25zZRIPCgJpZBgBIAEoCUgAiAEBEiIKBWl0ZW1zGAIgAygLMhMucHVibGljX2FwaS52MS5JdGVtEiwKB2RldGFpbHMYAyABKAsyGy5wdWJsaWNfYXBpLnYxLk9yZGVyRGV0YWlsc0IFCgNfaWQi+QEKDE9yZGVyRGV0YWlscxI1CgVpdGVtcxgBIAMoCzImLnB1YmxpY19hcGkudjEuT3JkZXJEZXRhaWxzLlNpbmdsZUl0ZW0SIwoHZ2F0ZXdheRgCIAEoDjISLmNvbW1vbi52MS5HYXRld2F5GowBCgpTaW5nbGVJdGVtEgoKAmlkGAEgASgJEhYKCWltYWdlX3VybBgCIAEoCUgAiAEBEgwKBG5hbWUYAyABKAkSEAoIcXVhbnRpdHkYBCABKAUSFAoMcHJpY2VfYW1vdW50GAUgASgDEhYKDnByaWNlX2N1cnJlbmN5GAYgASgJQgwKCl9pbWFnZV91cmwi0QEKBEl0ZW0SCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIRCglpbWFnZV91cmwYAyABKAkSPAoRZmlsZV9kb3dubG9hZGFibGUYBCABKAsyHy5wdWJsaWNfYXBpLnYxLkZpbGVEb3dubG9hZGFibGVIABItCglhdWRpb2Jvb2sYBSABKAsyGC5wdWJsaWNfYXBpLnYxLkF1ZGlvYm9va0gAEicKBnRpY2tldBgGIAEoCzIVLnB1YmxpY19hcGkudjEuVGlja2V0SABCBgoEaXRlbSIkChBGaWxlRG93bmxvYWRhYmxlEhAKCGZpbGVfdXJsGAEgASgJIiUKCUF1ZGlvYm9vaxIYChBhcHBfZG93bmxvYWRfdXJsGAEgASgJIoEBCgZUaWNrZXQSEQoJdGlja2V0X2lkGAEgASgJEhsKDmFwcGxlX3Bhc3NfdXJsGAIgASgJSACIAQESHgoRZ29vZ2xlX3RpY2tldF91cmwYAyABKAlIAYgBAUIRCg9fYXBwbGVfcGFzc191cmxCFAoSX2dvb2dsZV90aWNrZXRfdXJsIucCCgtVc2VyUHJvZHVjdBISCgpwcm9qZWN0X2lkGAEgASgJEhQKDHByb2plY3RfbmFtZRgCIAEoCRISCgpwcm9kdWN0X2lkGAMgASgJEhQKDHByb2R1Y3RfbmFtZRgEIAEoCRIbChNwcm9kdWN0X2Rlc2NyaXB0aW9uGAUgASgJEhkKEXByb2R1Y3RfaW1hZ2VfdXJsGAYgASgJEjQKDHByb2R1Y3RfdHlwZRgHIAEoDjIeLnB1YmxpY19hcGkudjEuVXNlclByb2R1Y3RUeXBlEhEKCWFjY2Vzc19pZBgIIAEoCRI3Cg1wcm9qZWN0X3RoZW1lGAkgASgLMhsucHVibGljX2FwaS52MS5Qcm9qZWN0VGhlbWVIAIgBARIgChNwcm9qZWN0X2Rlc2NyaXB0aW9uGAogASgJSAGIAQFCEAoOX3Byb2plY3RfdGhlbWVCFgoUX3Byb2plY3RfZGVzY3JpcHRpb24idQoMQm9vbFJlc3BvbnNlEikKB3N1Y2Nlc3MYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABIwCgdmYWlsdXJlGAIgASgOMh0ucHVibGljX2FwaS52MS5GYWlsdXJlTWVzc2FnZUgAQggKBnJlc3VsdCJuChBQdXNoRXZlbnRSZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRIXCg9ub3RpZmljYXRpb25faWQYAiABKAkSKwoFZXZlbnQYAyABKA4yHC5jb21tb24udjEuTm90aWZpY2F0aW9uRXZlbnQirQEKGlB1c2hTZW5kRGV2aWNlVG9rZW5SZXF1ZXN0EhQKDGFjY2Vzc190b2tlbhgBIAEoCRI3CgdwYXlsb2FkGAIgASgLMiYuY29tbW9uLnYxLlB1c2hOb3RpZmljYXRpb25EZXZpY2VUb2tlbhIkChdpc19ub3RpZmljYXRpb25fZ3JhbnRlZBgDIAEoCEgAiAEBQhoKGF9pc19ub3RpZmljYXRpb25fZ3JhbnRlZCLCAQoMUHJvamVjdFRoZW1lEhYKCWltYWdlX3VybBgBIAEoCUgAiAEBEhsKDmltYWdlX2RhcmtfdXJsGAIgASgJSAGIAQESGAoLYnJhbmRfY29sb3IYAyABKAlIAogBARIdChBicmFuZF9jb2xvcl9kYXJrGAQgASgJSAOIAQFCDAoKX2ltYWdlX3VybEIRCg9faW1hZ2VfZGFya191cmxCDgoMX2JyYW5kX2NvbG9yQhMKEV9icmFuZF9jb2xvcl9kYXJrIo4BChxHZXRQdWJsaWNPcmRlckRldGFpbHNSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIb3JkZXJfaWQYAiABKAkSEgoFZW1haWwYAyABKAlIAIgBARIZCgxhY2Nlc3NfdG9rZW4YBCABKAlIAYgBAUIICgZfZW1haWxCDwoNX2FjY2Vzc190b2tlbiJwCh1HZXRQdWJsaWNPcmRlckRldGFpbHNSZXNwb25zZRIyCgVvcmRlchgBIAEoCzIhLnB1YmxpY19hcGkudjEuUHVibGljT3JkZXJEZXRhaWxzSAASEQoHZmFpbHVyZRgCIAEoCUgAQggKBnJlc3VsdCKGBgoSUHVibGljT3JkZXJEZXRhaWxzEhAKCG9yZGVyX2lkGAEgASgJEg4KBnN0YXR1cxgCIAEoCRIeChFwcm9jZXNzaW5nX3N0YXR1cxgDIAEoCUgAiAEBEhUKDWN1c3RvbWVyX25hbWUYBCABKAkSFgoOY3VzdG9tZXJfZW1haWwYBSABKAkSGwoOY3VzdG9tZXJfcGhvbmUYBiABKAlIAYgBARIdChBkZWxpdmVyeV9hZGRyZXNzGAcgASgJSAKIAQESHAoPZGVsaXZlcnlfbWV0aG9kGAggASgJSAOIAQESHAoPdHJhY2tpbmdfbnVtYmVyGAkgASgJSASIAQESLQoFaXRlbXMYCiADKAsyHi5wdWJsaWNfYXBpLnYxLlB1YmxpY09yZGVySXRlbRIzCghjb21tZW50cxgLIAMoCzIhLnB1YmxpY19hcGkudjEuUHVibGljT3JkZXJDb21tZW50EhQKDHRvdGFsX2Ftb3VudBgMIAEoAxIQCghjdXJyZW5jeRgNIAEoCRIuCgpjcmVhdGVkX2F0GA4gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIzCgp1cGRhdGVkX2F0GA8gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgFiAEBEhMKC2lzX3ZlcmlmaWVkGBAgASgIEhUKDWNvbW1lbnRfY291bnQYESABKAUSNwoNcHJvamVjdF90aGVtZRgSIAEoCzIbLnB1YmxpY19hcGkudjEuUHJvamVjdFRoZW1lSAaIAQESGQoMcHJvamVjdF9uYW1lGBMgASgJSAeIAQFCFAoSX3Byb2Nlc3Npbmdfc3RhdHVzQhEKD19jdXN0b21lcl9waG9uZUITChFfZGVsaXZlcnlfYWRkcmVzc0ISChBfZGVsaXZlcnlfbWV0aG9kQhIKEF90cmFja2luZ19udW1iZXJCDQoLX3VwZGF0ZWRfYXRCEAoOX3Byb2plY3RfdGhlbWVCDwoNX3Byb2plY3RfbmFtZSJ4Cg9QdWJsaWNPcmRlckl0ZW0SDAoEbmFtZRgBIAEoCRIQCghxdWFudGl0eRgCIAEoBRINCgVwcmljZRgDIAEoAxIQCghjdXJyZW5jeRgEIAEoCRIWCglpbWFnZV91cmwYBSABKAlIAIgBAUIMCgpfaW1hZ2VfdXJsIqABChJQdWJsaWNPcmRlckNvbW1lbnQSCgoCaWQYASABKAUSDwoHbWVzc2FnZRgCIAEoCRITCgthdXRob3JfdHlwZRgDIAEoCRIYCgthdXRob3JfbmFtZRgEIAEoCUgAiAEBEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9hdXRob3JfbmFtZSJrChxBZGRQdWJsaWNPcmRlckNvbW1lbnRSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIb3JkZXJfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIUCgxhY2Nlc3NfdG9rZW4YBCABKAkikQEKHUFkZFB1YmxpY09yZGVyQ29tbWVudFJlc3BvbnNlEjQKB2NvbW1lbnQYASABKAsyIS5wdWJsaWNfYXBpLnYxLlB1YmxpY09yZGVyQ29tbWVudEgAEjAKB2ZhaWx1cmUYAiABKA4yHS5wdWJsaWNfYXBpLnYxLkZhaWx1cmVNZXNzYWdlSABCCAoGcmVzdWx0IkUKHUdldE9yZGVyRm9yVGVzdGltb25pYWxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIb3JkZXJfaWQYAiABKAkiwgMKHkdldE9yZGVyRm9yVGVzdGltb25pYWxSZXNwb25zZRJICgVvcmRlchgBIAEoCzI3LnB1YmxpY19hcGkudjEuR2V0T3JkZXJGb3JUZXN0aW1vbmlhbFJlc3BvbnNlLk9yZGVySW5mb0gAEhEKB2ZhaWx1cmUYAiABKAlIABqAAQoMT3JkZXJQcm9kdWN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMcHJvZHVjdF9uYW1lGAIgASgJEh4KEXByb2R1Y3RfaW1hZ2VfdXJsGAMgASgJSACIAQESEAoIcXVhbnRpdHkYBCABKAVCFAoSX3Byb2R1Y3RfaW1hZ2VfdXJsGrUBCglPcmRlckluZm8SEAoIb3JkZXJfaWQYASABKAkSFQoNY3VzdG9tZXJfbmFtZRgCIAEoCRIWCg5jdXN0b21lcl9lbWFpbBgDIAEoCRJMCghwcm9kdWN0cxgEIAMoCzI6LnB1YmxpY19hcGkudjEuR2V0T3JkZXJGb3JUZXN0aW1vbmlhbFJlc3BvbnNlLk9yZGVyUHJvZHVjdBIZChFhbHJlYWR5X3N1Ym1pdHRlZBgFIAEoCEIICgZyZXN1bHQiswEKGFN1Ym1pdFRlc3RpbW9uaWFsUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhAKCG9yZGVyX2lkGAIgASgJEhUKDWN1c3RvbWVyX25hbWUYAyABKAkSFgoJcGhvdG9fdXJsGAQgASgJSACIAQESDgoGcmF0aW5nGAUgASgFEg8KB21lc3NhZ2UYBiABKAkSEwoLcHJvZHVjdF9pZHMYByADKAlCDAoKX3Bob3RvX3VybCKCAQoZU3VibWl0VGVzdGltb25pYWxSZXNwb25zZRIpCgdzdWNjZXNzGAEgASgLMhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5SAASMAoHZmFpbHVyZRgCIAEoDjIdLnB1YmxpY19hcGkudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQiWAoeR2V0VGVzdGltb25pYWxVcGxvYWRVcmxSZXF1ZXN0EhIKCnByb2plY3RfaWQYASABKAkSEAoIb3JkZXJfaWQYAiABKAkSEAoIZmlsZW5hbWUYAyABKAkiSQofR2V0VGVzdGltb25pYWxVcGxvYWRVcmxSZXNwb25zZRISCgp1cGxvYWRfdXJsGAEgASgJEhIKCnB1YmxpY191cmwYAiABKAkqtAEKF0xvZ2luQ29kZURlbGl2ZXJ5TWV0aG9kEioKJkxPR0lOX0NPREVfREVMSVZFUllfTUVUSE9EX1VOU1BFQ0lGSUVEEAASJAogTE9HSU5fQ09ERV9ERUxJVkVSWV9NRVRIT0RfRU1BSUwQARIjCh9MT0dJTl9DT0RFX0RFTElWRVJZX01FVEhPRF9QVVNIEAISIgoeTE9HSU5fQ09ERV9ERUxJVkVSWV9NRVRIT0RfU01TEAMqpQEKD1VzZXJQcm9kdWN0VHlwZRIdChlVU0VSX1BST0RVQ1RfVFlQRV9VTktOT1dOEAASGwoXVVNFUl9QUk9EVUNUX1RZUEVfQVVESU8QARIaChZVU0VSX1BST0RVQ1RfVFlQRV9GSUxFEAISHAoYVVNFUl9QUk9EVUNUX1RZUEVfVElDS0VUEAMSHAoYVVNFUl9QUk9EVUNUX1RZUEVfQ09VUlNFEAQqqQQKDkZhaWx1cmVNZXNzYWdlEhsKF0ZBSUxVUkVfTUVTU0FHRV9VTktOT1dOEAASIwofRkFJTFVSRV9NRVNTQUdFX0VNQUlMX05PVF9GT1VORBABEiMKH0ZBSUxVUkVfTUVTU0FHRV9JTkNPUlJFQ1RfRU1BSUwQAhIiCh5GQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0NPREUQAxIwCixGQUlMVVJFX01FU1NBR0VfR0VORVJBVEVfQUNDRVNTX1RPS0VOX0ZBSUxFRBAEEiEKHUZBSUxVUkVfTUVTU0FHRV9MT0dPVVRfRkFJTEVEEAUSJQohRkFJTFVSRV9NRVNTQUdFX1BSRFVDVFNfTk9UX0ZPVU5EEAYSJwojRkFJTFVSRV9NRVNTQUdFX0FVRElPQk9PS19OT1RfRk9VTkQQBxInCiNGQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0FVRElPQk9PSxAIEiAKHEZBSUxVUkVfTUVTU0FHRV9VTkFVVEhPUklaRUQQCRIkCiBGQUlMVVJFX01FU1NBR0VfVElDS0VUX05PVF9GT1VORBAKEi8KK0ZBSUxVUkVfTUVTU0FHRV9ERUxJVkVSWV9NRVRIT0RfVU5BVkFJTEFCTEUQCxIjCh9GQUlMVVJFX01FU1NBR0VfREVMSVZFUllfRkFJTEVEEAwSIAocRkFJTFVSRV9NRVNTQUdFX1JBVEVfTElNSVRFRBANKo8BChJOb3RpZmljYXRpb25NZXRob2QSHwobTk9USUZJQ0FUSU9OX01FVEhPRF9VTktOT1dOEAASHQoZTk9USUZJQ0FUSU9OX01FVEhPRF9FTUFJTBABEhsKF05PVElGSUNBVElPTl9NRVRIT0RfU01TEAISHAoYTk9USUZJQ0FUSU9OX01FVEhPRF9QVVNIEAMy8iUKEFB1YmxpY0FwaVNlcnZpY2USSwoIR2V0T3JkZXISHi5wdWJsaWNfYXBpLnYxLkdldE9yZGVyUmVxdWVzdBofLnB1YmxpY19hcGkudjEuR2V0T3JkZXJSZXNwb25zZRJOCglHZXRPcmRlcnMSHy5wdWJsaWNfYXBpLnYxLkdldE9yZGVyc1JlcXVlc3QaIC5wdWJsaWNfYXBpLnYxLkdldE9yZGVyc1Jlc3BvbnNlEmMKEEdldE9yZGVyUmV0cnlVcmwSJi5wdWJsaWNfYXBpLnYxLkdldE9yZGVyUmV0cnlVcmxSZXF1ZXN0GicucHVibGljX2FwaS52MS5HZXRPcmRlclJldHJ5VXJsUmVzcG9uc2USXQoOVXNlclBhbmVsTG9naW4SJC5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbExvZ2luUmVxdWVzdBolLnB1YmxpY19hcGkudjEuVXNlclBhbmVsTG9naW5SZXNwb25zZRJ1ChZVc2VyUGFuZWxMb2dpbldpdGhDb2RlEiwucHVibGljX2FwaS52MS5Vc2VyUGFuZWxMb2dpbldpdGhDb2RlUmVxdWVzdBotLnB1YmxpY19hcGkudjEuVXNlclBhbmVsTG9naW5XaXRoQ29kZVJlc3BvbnNlElUKD1VzZXJQYW5lbExvZ291dBIlLnB1YmxpY19hcGkudjEuVXNlclBhbmVsTG9nb3V0UmVxdWVzdBobLnB1YmxpY19hcGkudjEuQm9vbFJlc3BvbnNlEmMKFlVzZXJQYW5lbERlbGV0ZUFjY291bnQSLC5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbERlbGV0ZUFjY291bnRSZXF1ZXN0GhsucHVibGljX2FwaS52MS5Cb29sUmVzcG9uc2USbwoUVXNlclBhbmVsR2V0UHJvZHVjdHMSKi5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldFByb2R1Y3RzUmVxdWVzdBorLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0UHJvZHVjdHNSZXNwb25zZRKHAQocVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlscxIyLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc1JlcXVlc3QaMy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNSZXNwb25zZRKrAQooVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc0Rvd25sb2FkVVJMcxI+LnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0QXVkaW9ib29rRGV0YWlsc0Rvd25sb2FkVVJMc1JlcXVlc3QaPy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldEF1ZGlvYm9va0RldGFpbHNEb3dubG9hZFVSTHNSZXNwb25zZRJ4ChdVc2VyUGFuZWxHZXRGaWxlRGV0YWlscxItLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0RmlsZURldGFpbHNSZXF1ZXN0Gi4ucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRGaWxlRGV0YWlsc1Jlc3BvbnNlEn4KGVVzZXJQYW5lbEdldFRpY2tldERldGFpbHMSLy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldFRpY2tldERldGFpbHNSZXF1ZXN0GjAucHVibGljX2FwaS52MS5Vc2VyUGFuZWxHZXRUaWNrZXREZXRhaWxzUmVzcG9uc2USfgoZVXNlclBhbmVsR2V0Q291cnNlRGV0YWlscxIvLnB1YmxpY19hcGkudjEuVXNlclBhbmVsR2V0Q291cnNlRGV0YWlsc1JlcXVlc3QaMC5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbEdldENvdXJzZURldGFpbHNSZXNwb25zZRJYChNQdXNoU2VuZERldmljZVRva2VuEikucHVibGljX2FwaS52MS5QdXNoU2VuZERldmljZVRva2VuUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJECglQdXNoRXZlbnQSHy5wdWJsaWNfYXBpLnYxLlB1c2hFdmVudFJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSVwoSU2hvdWxkU2hvcFByb2R1Y3RzEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GikucHVibGljX2FwaS52MS5TaG91bGRTaG9wUHJvZHVjdHNSZXNwb25zZRJfChZTaG91bGRTaG93R3Vlc3RDYXRhbG9nEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Gi0ucHVibGljX2FwaS52MS5TaG91bGRTaG93R3Vlc3RDYXRhbG9nUmVzcG9uc2USUQoPR2V0R3Vlc3RDYXRhbG9nEhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5GiYucHVibGljX2FwaS52MS5HZXRHdWVzdENhdGFsb2dSZXNwb25zZRKKAQodVXNlclBhbmVsUmVzb2x2ZVByb2R1Y3RBY2Nlc3MSMy5wdWJsaWNfYXBpLnYxLlVzZXJQYW5lbFJlc29sdmVQcm9kdWN0QWNjZXNzUmVxdWVzdBo0LnB1YmxpY19hcGkudjEuVXNlclBhbmVsUmVzb2x2ZVByb2R1Y3RBY2Nlc3NSZXNwb25zZRJgCg9HZXRTaG9wUHJvZHVjdHMSJS5wdWJsaWNfYXBpLnYxLkdldFNob3BQcm9kdWN0c1JlcXVlc3QaJi5wdWJsaWNfYXBpLnYxLkdldFNob3BQcm9kdWN0c1Jlc3BvbnNlEkwKDURpZEJ1eVByb2R1Y3QSIy5wdWJsaWNfYXBpLnYxLkRpZEJ1eVByb2R1Y3RSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EngKF0dldEFwcFN0b3JlQWNjb3VudFRva2VuEi0ucHVibGljX2FwaS52MS5HZXRBcHBTdG9yZUFjY291bnRUb2tlblJlcXVlc3QaLi5wdWJsaWNfYXBpLnYxLkdldEFwcFN0b3JlQWNjb3VudFRva2VuUmVzcG9uc2USdQoWVmVyaWZ5QXBwU3RvcmVQdXJjaGFzZRIsLnB1YmxpY19hcGkudjEuVmVyaWZ5QXBwU3RvcmVQdXJjaGFzZVJlcXVlc3QaLS5wdWJsaWNfYXBpLnYxLlZlcmlmeUFwcFN0b3JlUHVyY2hhc2VSZXNwb25zZRJ4ChdHZXRBcHBTdG9yZUVudGl0bGVtZW50cxItLnB1YmxpY19hcGkudjEuR2V0QXBwU3RvcmVFbnRpdGxlbWVudHNSZXF1ZXN0Gi4ucHVibGljX2FwaS52MS5HZXRBcHBTdG9yZUVudGl0bGVtZW50c1Jlc3BvbnNlEnsKGFJlc3RvcmVBcHBTdG9yZVB1cmNoYXNlcxIuLnB1YmxpY19hcGkudjEuUmVzdG9yZUFwcFN0b3JlUHVyY2hhc2VzUmVxdWVzdBovLnB1YmxpY19hcGkudjEuUmVzdG9yZUFwcFN0b3JlUHVyY2hhc2VzUmVzcG9uc2USZAoZQ2xlYXJBcHBTdG9yZUFjY291bnRUb2tlbhIvLnB1YmxpY19hcGkudjEuQ2xlYXJBcHBTdG9yZUFjY291bnRUb2tlblJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSaQoSR2V0U3RvcmVLaXRDYXRhbG9nEigucHVibGljX2FwaS52MS5HZXRTdG9yZUtpdENhdGFsb2dSZXF1ZXN0GikucHVibGljX2FwaS52MS5HZXRTdG9yZUtpdENhdGFsb2dSZXNwb25zZRJ4ChdHZXROb3RpZmljYXRpb25TZXR0aW5ncxItLnB1YmxpY19hcGkudjEuR2V0Tm90aWZpY2F0aW9uU2V0dGluZ3NSZXF1ZXN0Gi4ucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25TZXR0aW5nc1Jlc3BvbnNlEo0BCh5HZXROb3RpZmljYXRpb25TZXR0aW5nc0RldGFpbHMSNC5wdWJsaWNfYXBpLnYxLkdldE5vdGlmaWNhdGlvblNldHRpbmdzRGV0YWlsc1JlcXVlc3QaNS5wdWJsaWNfYXBpLnYxLkdldE5vdGlmaWNhdGlvblNldHRpbmdzRGV0YWlsc1Jlc3BvbnNlEnIKIFVwZGF0ZUdsb2JhbE5vdGlmaWNhdGlvblNldHRpbmdzEjYucHVibGljX2FwaS52MS5VcGRhdGVHbG9iYWxOb3RpZmljYXRpb25TZXR0aW5nc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSZgoaVXBkYXRlTm90aWZpY2F0aW9uU2V0dGluZ3MSMC5wdWJsaWNfYXBpLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblNldHRpbmdzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJ1ChZHZXROb3RpZmljYXRpb25IaXN0b3J5EiwucHVibGljX2FwaS52MS5HZXROb3RpZmljYXRpb25IaXN0b3J5UmVxdWVzdBotLnB1YmxpY19hcGkudjEuR2V0Tm90aWZpY2F0aW9uSGlzdG9yeVJlc3BvbnNlEoQBChtHZXRBdmFpbGFibGVDb3VudEZvclByb2R1Y3QSMS5wdWJsaWNfYXBpLnYxLkdldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlcXVlc3QaMi5wdWJsaWNfYXBpLnYxLkdldEF2YWlsYWJsZUNvdW50Rm9yUHJvZHVjdFJlc3BvbnNlEoEBChpJc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZRIwLnB1YmxpY19hcGkudjEuSXNPbmVDbGlja1BheW1lbnRBdmFpbGFibGVSZXF1ZXN0GjEucHVibGljX2FwaS52MS5Jc09uZUNsaWNrUGF5bWVudEF2YWlsYWJsZVJlc3BvbnNlEmkKEkdldFByZU9yZGVyRGV0YWlscxIoLnB1YmxpY19hcGkudjEuR2V0UHJlT3JkZXJEZXRhaWxzUmVxdWVzdBopLnB1YmxpY19hcGkudjEuR2V0UHJlT3JkZXJEZXRhaWxzUmVzcG9uc2USewoYQXBwbGVQYXlWYWxpZGF0ZU1lcmNoYW50Ei4ucHVibGljX2FwaS52MS5BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRSZXF1ZXN0Gi8ucHVibGljX2FwaS52MS5BcHBsZVBheVZhbGlkYXRlTWVyY2hhbnRSZXNwb25zZRJ7ChhBdXRob3JpemVPbmVDbGlja1BheW1lbnQSLi5wdWJsaWNfYXBpLnYxLk9uZUNsaWNrQXV0aG9yaXplUGF5bWVudFJlcXVlc3QaLy5wdWJsaWNfYXBpLnYxLk9uZUNsaWNrQXV0aG9yaXplUGF5bWVudFJlc3BvbnNlEnYKIk5vdGlmeVVzZXJBYm91dFByb2R1Y3RBdmFpbGFiaWxpdHkSOC5wdWJsaWNfYXBpLnYxLk5vdGlmeVVzZXJBYm91dFByb2R1Y3RBdmFpbGFiaWxpdHlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EnIKFUdldFB1YmxpY09yZGVyRGV0YWlscxIrLnB1YmxpY19hcGkudjEuR2V0UHVibGljT3JkZXJEZXRhaWxzUmVxdWVzdBosLnB1YmxpY19hcGkudjEuR2V0UHVibGljT3JkZXJEZXRhaWxzUmVzcG9uc2UScgoVQWRkUHVibGljT3JkZXJDb21tZW50EisucHVibGljX2FwaS52MS5BZGRQdWJsaWNPcmRlckNvbW1lbnRSZXF1ZXN0GiwucHVibGljX2FwaS52MS5BZGRQdWJsaWNPcmRlckNvbW1lbnRSZXNwb25zZRJ1ChZHZXRPcmRlckZvclRlc3RpbW9uaWFsEiwucHVibGljX2FwaS52MS5HZXRPcmRlckZvclRlc3RpbW9uaWFsUmVxdWVzdBotLnB1YmxpY19hcGkudjEuR2V0T3JkZXJGb3JUZXN0aW1vbmlhbFJlc3BvbnNlEmYKEVN1Ym1pdFRlc3RpbW9uaWFsEicucHVibGljX2FwaS52MS5TdWJtaXRUZXN0aW1vbmlhbFJlcXVlc3QaKC5wdWJsaWNfYXBpLnYxLlN1Ym1pdFRlc3RpbW9uaWFsUmVzcG9uc2USeAoXR2V0VGVzdGltb25pYWxVcGxvYWRVcmwSLS5wdWJsaWNfYXBpLnYxLkdldFRlc3RpbW9uaWFsVXBsb2FkVXJsUmVxdWVzdBouLnB1YmxpY19hcGkudjEuR2V0VGVzdGltb25pYWxVcGxvYWRVcmxSZXNwb25zZWIGcHJvdG8z\", [file_common_v1_address, file_common_v1_gateway, file_common_v1_push_notifications, file_dashboard_v1_audiobooks, file_google_protobuf_empty, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message public_api.v1.GetAppStoreAccountTokenRequest\n */\nexport type GetAppStoreAccountTokenRequest = Message<\"public_api.v1.GetAppStoreAccountTokenRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.GetAppStoreAccountTokenRequest.\n * Use `create(GetAppStoreAccountTokenRequestSchema)` to create a new message.\n */\nexport const GetAppStoreAccountTokenRequestSchema: GenMessage<GetAppStoreAccountTokenRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 0);\n\n/**\n * @generated from message public_api.v1.GetAppStoreAccountTokenResponse\n */\nexport type GetAppStoreAccountTokenResponse = Message<\"public_api.v1.GetAppStoreAccountTokenResponse\"> & {\n /**\n * @generated from field: string app_account_token = 1;\n */\n appAccountToken: string;\n};\n\n/**\n * Describes the message public_api.v1.GetAppStoreAccountTokenResponse.\n * Use `create(GetAppStoreAccountTokenResponseSchema)` to create a new message.\n */\nexport const GetAppStoreAccountTokenResponseSchema: GenMessage<GetAppStoreAccountTokenResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 1);\n\n/**\n * @generated from message public_api.v1.VerifyAppStorePurchaseRequest\n */\nexport type VerifyAppStorePurchaseRequest = Message<\"public_api.v1.VerifyAppStorePurchaseRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string signed_transaction = 2;\n */\n signedTransaction: string;\n\n /**\n * @generated from field: string transaction_id = 3;\n */\n transactionId: string;\n};\n\n/**\n * Describes the message public_api.v1.VerifyAppStorePurchaseRequest.\n * Use `create(VerifyAppStorePurchaseRequestSchema)` to create a new message.\n */\nexport const VerifyAppStorePurchaseRequestSchema: GenMessage<VerifyAppStorePurchaseRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 2);\n\n/**\n * @generated from message public_api.v1.VerifyAppStorePurchaseResponse\n */\nexport type VerifyAppStorePurchaseResponse = Message<\"public_api.v1.VerifyAppStorePurchaseResponse\"> & {\n /**\n * @generated from field: bool fulfilled = 1;\n */\n fulfilled: boolean;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: string environment = 3;\n */\n environment: string;\n};\n\n/**\n * Describes the message public_api.v1.VerifyAppStorePurchaseResponse.\n * Use `create(VerifyAppStorePurchaseResponseSchema)` to create a new message.\n */\nexport const VerifyAppStorePurchaseResponseSchema: GenMessage<VerifyAppStorePurchaseResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 3);\n\n/**\n * @generated from message public_api.v1.GetAppStoreEntitlementsRequest\n */\nexport type GetAppStoreEntitlementsRequest = Message<\"public_api.v1.GetAppStoreEntitlementsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.GetAppStoreEntitlementsRequest.\n * Use `create(GetAppStoreEntitlementsRequestSchema)` to create a new message.\n */\nexport const GetAppStoreEntitlementsRequestSchema: GenMessage<GetAppStoreEntitlementsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 4);\n\n/**\n * @generated from message public_api.v1.GetAppStoreEntitlementsResponse\n */\nexport type GetAppStoreEntitlementsResponse = Message<\"public_api.v1.GetAppStoreEntitlementsResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.GetAppStoreEntitlementsResponse.Entitlement entitlements = 1;\n */\n entitlements: GetAppStoreEntitlementsResponse_Entitlement[];\n};\n\n/**\n * Describes the message public_api.v1.GetAppStoreEntitlementsResponse.\n * Use `create(GetAppStoreEntitlementsResponseSchema)` to create a new message.\n */\nexport const GetAppStoreEntitlementsResponseSchema: GenMessage<GetAppStoreEntitlementsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 5);\n\n/**\n * @generated from message public_api.v1.GetAppStoreEntitlementsResponse.Entitlement\n */\nexport type GetAppStoreEntitlementsResponse_Entitlement = Message<\"public_api.v1.GetAppStoreEntitlementsResponse.Entitlement\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string status = 2;\n */\n status: string;\n\n /**\n * @generated from field: string environment = 3;\n */\n environment: string;\n\n /**\n * @generated from field: string fulfillment_status = 4;\n */\n fulfillmentStatus: string;\n\n /**\n * @generated from field: string original_transaction_id = 5;\n */\n originalTransactionId: string;\n};\n\n/**\n * Describes the message public_api.v1.GetAppStoreEntitlementsResponse.Entitlement.\n * Use `create(GetAppStoreEntitlementsResponse_EntitlementSchema)` to create a new message.\n */\nexport const GetAppStoreEntitlementsResponse_EntitlementSchema: GenMessage<GetAppStoreEntitlementsResponse_Entitlement> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 5, 0);\n\n/**\n * @generated from message public_api.v1.RestoreAppStorePurchasesRequest\n */\nexport type RestoreAppStorePurchasesRequest = Message<\"public_api.v1.RestoreAppStorePurchasesRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * JWS strings from expo-iap getAvailablePurchases. Each entry is verified on\n * the backend, matched against the customer's account token, and used to\n * refresh entitlements. Duplicate or empty JWS strings are skipped.\n *\n * @generated from field: repeated string signed_transactions = 2;\n */\n signedTransactions: string[];\n};\n\n/**\n * Describes the message public_api.v1.RestoreAppStorePurchasesRequest.\n * Use `create(RestoreAppStorePurchasesRequestSchema)` to create a new message.\n */\nexport const RestoreAppStorePurchasesRequestSchema: GenMessage<RestoreAppStorePurchasesRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 6);\n\n/**\n * @generated from message public_api.v1.RestoreAppStorePurchasesResponse\n */\nexport type RestoreAppStorePurchasesResponse = Message<\"public_api.v1.RestoreAppStorePurchasesResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.RestoreAppStorePurchasesResponse.RestoredProduct products = 1;\n */\n products: RestoreAppStorePurchasesResponse_RestoredProduct[];\n\n /**\n * True when at least one transaction came back as family-shared. The\n * customer's existing library is preserved; an ops review row is recorded.\n *\n * @generated from field: bool family_sharing_review_required = 2;\n */\n familySharingReviewRequired: boolean;\n};\n\n/**\n * Describes the message public_api.v1.RestoreAppStorePurchasesResponse.\n * Use `create(RestoreAppStorePurchasesResponseSchema)` to create a new message.\n */\nexport const RestoreAppStorePurchasesResponseSchema: GenMessage<RestoreAppStorePurchasesResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 7);\n\n/**\n * @generated from message public_api.v1.RestoreAppStorePurchasesResponse.RestoredProduct\n */\nexport type RestoreAppStorePurchasesResponse_RestoredProduct = Message<\"public_api.v1.RestoreAppStorePurchasesResponse.RestoredProduct\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string original_transaction_id = 2;\n */\n originalTransactionId: string;\n\n /**\n * \"active\" | \"revoked\" | \"skipped\" | \"rejected\"\n *\n * @generated from field: string status = 3;\n */\n status: string;\n\n /**\n * Populated when status is \"rejected\" or \"skipped\" so the caller can show\n * actionable UI (signature mismatch, family-shared ownership, owner\n * mismatch, duplicate empty JWS, etc).\n *\n * @generated from field: string reason = 4;\n */\n reason: string;\n\n /**\n * @generated from field: bool fulfilled = 5;\n */\n fulfilled: boolean;\n};\n\n/**\n * Describes the message public_api.v1.RestoreAppStorePurchasesResponse.RestoredProduct.\n * Use `create(RestoreAppStorePurchasesResponse_RestoredProductSchema)` to create a new message.\n */\nexport const RestoreAppStorePurchasesResponse_RestoredProductSchema: GenMessage<RestoreAppStorePurchasesResponse_RestoredProduct> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 7, 0);\n\n/**\n * @generated from message public_api.v1.ClearAppStoreAccountTokenRequest\n */\nexport type ClearAppStoreAccountTokenRequest = Message<\"public_api.v1.ClearAppStoreAccountTokenRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.ClearAppStoreAccountTokenRequest.\n * Use `create(ClearAppStoreAccountTokenRequestSchema)` to create a new message.\n */\nexport const ClearAppStoreAccountTokenRequestSchema: GenMessage<ClearAppStoreAccountTokenRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 8);\n\n/**\n * @generated from message public_api.v1.GetStoreKitCatalogRequest\n */\nexport type GetStoreKitCatalogRequest = Message<\"public_api.v1.GetStoreKitCatalogRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.GetStoreKitCatalogRequest.\n * Use `create(GetStoreKitCatalogRequestSchema)` to create a new message.\n */\nexport const GetStoreKitCatalogRequestSchema: GenMessage<GetStoreKitCatalogRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 9);\n\n/**\n * @generated from message public_api.v1.GetStoreKitCatalogResponse\n */\nexport type GetStoreKitCatalogResponse = Message<\"public_api.v1.GetStoreKitCatalogResponse\"> & {\n /**\n * Mirrors the DIRECT_STOREKIT_PAYWALL_ENABLED flag so the mobile client can\n * decide whether to surface the direct StoreKit paywall or fall back to\n * RevenueCat. The catalog itself is gated by DIRECT_STOREKIT_ENABLED at\n * the route level.\n *\n * @generated from field: bool paywall_enabled = 1;\n */\n paywallEnabled: boolean;\n\n /**\n * @generated from field: repeated public_api.v1.GetStoreKitCatalogResponse.Product products = 2;\n */\n products: GetStoreKitCatalogResponse_Product[];\n};\n\n/**\n * Describes the message public_api.v1.GetStoreKitCatalogResponse.\n * Use `create(GetStoreKitCatalogResponseSchema)` to create a new message.\n */\nexport const GetStoreKitCatalogResponseSchema: GenMessage<GetStoreKitCatalogResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 10);\n\n/**\n * @generated from message public_api.v1.GetStoreKitCatalogResponse.Product\n */\nexport type GetStoreKitCatalogResponse_Product = Message<\"public_api.v1.GetStoreKitCatalogResponse.Product\"> & {\n /**\n * @generated from field: string store_product_id = 1;\n */\n storeProductId: string;\n\n /**\n * @generated from field: string internal_product_id = 2;\n */\n internalProductId: string;\n\n /**\n * \"audiobook\" | \"ebook\"\n *\n * @generated from field: string kind = 3;\n */\n kind: string;\n\n /**\n * @generated from field: string display_name = 4;\n */\n displayName: string;\n\n /**\n * @generated from field: string description = 5;\n */\n description: string;\n};\n\n/**\n * Describes the message public_api.v1.GetStoreKitCatalogResponse.Product.\n * Use `create(GetStoreKitCatalogResponse_ProductSchema)` to create a new message.\n */\nexport const GetStoreKitCatalogResponse_ProductSchema: GenMessage<GetStoreKitCatalogResponse_Product> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 10, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelGetCourseDetailsRequest\n */\nexport type UserPanelGetCourseDetailsRequest = Message<\"public_api.v1.UserPanelGetCourseDetailsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string access_id = 2;\n */\n accessId: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetCourseDetailsRequest.\n * Use `create(UserPanelGetCourseDetailsRequestSchema)` to create a new message.\n */\nexport const UserPanelGetCourseDetailsRequestSchema: GenMessage<UserPanelGetCourseDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 11);\n\n/**\n * @generated from message public_api.v1.UserPanelGetCourseDetailsResponse\n */\nexport type UserPanelGetCourseDetailsResponse = Message<\"public_api.v1.UserPanelGetCourseDetailsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelGetCourseDetailsResponse.result\n */\n result: {\n /**\n * @generated from field: string redirect_url = 1;\n */\n value: string;\n case: \"redirectUrl\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetCourseDetailsResponse.\n * Use `create(UserPanelGetCourseDetailsResponseSchema)` to create a new message.\n */\nexport const UserPanelGetCourseDetailsResponseSchema: GenMessage<UserPanelGetCourseDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 12);\n\n/**\n * @generated from message public_api.v1.GetOrdersRequest\n */\nexport type GetOrdersRequest = Message<\"public_api.v1.GetOrdersRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string access_token = 2;\n */\n accessToken: string;\n\n /**\n * @generated from field: optional int32 limit = 3;\n */\n limit?: number;\n\n /**\n * @generated from field: optional int32 offset = 4;\n */\n offset?: number;\n};\n\n/**\n * Describes the message public_api.v1.GetOrdersRequest.\n * Use `create(GetOrdersRequestSchema)` to create a new message.\n */\nexport const GetOrdersRequestSchema: GenMessage<GetOrdersRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 13);\n\n/**\n * @generated from message public_api.v1.GetOrdersResponse\n */\nexport type GetOrdersResponse = Message<\"public_api.v1.GetOrdersResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.GetOrdersResponse.OrderSummary orders = 1;\n */\n orders: GetOrdersResponse_OrderSummary[];\n\n /**\n * @generated from field: int32 total_count = 2;\n */\n totalCount: number;\n};\n\n/**\n * Describes the message public_api.v1.GetOrdersResponse.\n * Use `create(GetOrdersResponseSchema)` to create a new message.\n */\nexport const GetOrdersResponseSchema: GenMessage<GetOrdersResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 14);\n\n/**\n * @generated from message public_api.v1.GetOrdersResponse.OrderSummary\n */\nexport type GetOrdersResponse_OrderSummary = Message<\"public_api.v1.GetOrdersResponse.OrderSummary\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string status = 2;\n */\n status: string;\n\n /**\n * @generated from field: int32 total_amount = 3;\n */\n totalAmount: number;\n\n /**\n * @generated from field: string currency = 4;\n */\n currency: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: string customer_name = 6;\n */\n customerName: string;\n};\n\n/**\n * Describes the message public_api.v1.GetOrdersResponse.OrderSummary.\n * Use `create(GetOrdersResponse_OrderSummarySchema)` to create a new message.\n */\nexport const GetOrdersResponse_OrderSummarySchema: GenMessage<GetOrdersResponse_OrderSummary> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 14, 0);\n\n/**\n * @generated from message public_api.v1.IsOneClickPaymentAvailableRequest\n */\nexport type IsOneClickPaymentAvailableRequest = Message<\"public_api.v1.IsOneClickPaymentAvailableRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n};\n\n/**\n * Describes the message public_api.v1.IsOneClickPaymentAvailableRequest.\n * Use `create(IsOneClickPaymentAvailableRequestSchema)` to create a new message.\n */\nexport const IsOneClickPaymentAvailableRequestSchema: GenMessage<IsOneClickPaymentAvailableRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 15);\n\n/**\n * @generated from message public_api.v1.IsOneClickPaymentAvailableResponse\n */\nexport type IsOneClickPaymentAvailableResponse = Message<\"public_api.v1.IsOneClickPaymentAvailableResponse\"> & {\n /**\n * @generated from field: bool inpost_pay = 1;\n */\n inpostPay: boolean;\n\n /**\n * @generated from field: bool apple_pay = 2;\n */\n applePay: boolean;\n\n /**\n * @generated from field: bool google_pay = 3;\n */\n googlePay: boolean;\n\n /**\n * @generated from field: optional public_api.v1.IsOneClickPaymentAvailableResponse.GooglePayConfig google_pay_config = 4;\n */\n googlePayConfig?: IsOneClickPaymentAvailableResponse_GooglePayConfig;\n};\n\n/**\n * Describes the message public_api.v1.IsOneClickPaymentAvailableResponse.\n * Use `create(IsOneClickPaymentAvailableResponseSchema)` to create a new message.\n */\nexport const IsOneClickPaymentAvailableResponseSchema: GenMessage<IsOneClickPaymentAvailableResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 16);\n\n/**\n * @generated from message public_api.v1.IsOneClickPaymentAvailableResponse.GooglePayConfig\n */\nexport type IsOneClickPaymentAvailableResponse_GooglePayConfig = Message<\"public_api.v1.IsOneClickPaymentAvailableResponse.GooglePayConfig\"> & {\n /**\n * @generated from field: string merchant_id = 1;\n */\n merchantId: string;\n\n /**\n * @generated from field: string merchant_name = 2;\n */\n merchantName: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: string gateway_merchant_id = 4;\n */\n gatewayMerchantId: string;\n};\n\n/**\n * Describes the message public_api.v1.IsOneClickPaymentAvailableResponse.GooglePayConfig.\n * Use `create(IsOneClickPaymentAvailableResponse_GooglePayConfigSchema)` to create a new message.\n */\nexport const IsOneClickPaymentAvailableResponse_GooglePayConfigSchema: GenMessage<IsOneClickPaymentAvailableResponse_GooglePayConfig> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 16, 0);\n\n/**\n * @generated from message public_api.v1.OneClickAuthorizePaymentRequest\n */\nexport type OneClickAuthorizePaymentRequest = Message<\"public_api.v1.OneClickAuthorizePaymentRequest\"> & {\n /**\n * @generated from field: public_api.v1.OneClickAuthorizePaymentRequest.Gateway gateway = 1;\n */\n gateway: OneClickAuthorizePaymentRequest_Gateway;\n\n /**\n * @generated from field: string paymentData = 2;\n */\n paymentData: string;\n\n /**\n * @generated from field: string paymentMethod = 3;\n */\n paymentMethod: string;\n\n /**\n * @generated from field: string transactionIdentifier = 4;\n */\n transactionIdentifier: string;\n\n /**\n * @generated from field: public_api.v1.GetPreOrderDetailsRequest order = 5;\n */\n order?: GetPreOrderDetailsRequest;\n\n /**\n * @generated from field: optional common.v1.Address shipping_address = 6;\n */\n shippingAddress?: Address;\n\n /**\n * @generated from field: optional common.v1.BillingAddress billing_address = 7;\n */\n billingAddress?: BillingAddress;\n\n /**\n * @generated from field: optional string metadata = 8;\n */\n metadata?: string;\n};\n\n/**\n * Describes the message public_api.v1.OneClickAuthorizePaymentRequest.\n * Use `create(OneClickAuthorizePaymentRequestSchema)` to create a new message.\n */\nexport const OneClickAuthorizePaymentRequestSchema: GenMessage<OneClickAuthorizePaymentRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 17);\n\n/**\n * @generated from enum public_api.v1.OneClickAuthorizePaymentRequest.Gateway\n */\nexport enum OneClickAuthorizePaymentRequest_Gateway {\n /**\n * @generated from enum value: APPLE_PAY = 0;\n */\n APPLE_PAY = 0,\n\n /**\n * @generated from enum value: GOOGLE_PAY = 1;\n */\n GOOGLE_PAY = 1,\n}\n\n/**\n * Describes the enum public_api.v1.OneClickAuthorizePaymentRequest.Gateway.\n */\nexport const OneClickAuthorizePaymentRequest_GatewaySchema: GenEnum<OneClickAuthorizePaymentRequest_Gateway> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 17, 0);\n\n/**\n * @generated from message public_api.v1.OneClickAuthorizePaymentResponse\n */\nexport type OneClickAuthorizePaymentResponse = Message<\"public_api.v1.OneClickAuthorizePaymentResponse\"> & {\n /**\n * @generated from field: bool is_success = 1;\n */\n isSuccess: boolean;\n\n /**\n * @generated from field: string redirect_url = 2;\n */\n redirectUrl: string;\n\n /**\n * @generated from field: string transaction_id = 3;\n */\n transactionId: string;\n\n /**\n * @generated from field: optional string apple_pay_tracking_url = 4;\n */\n applePayTrackingUrl?: string;\n};\n\n/**\n * Describes the message public_api.v1.OneClickAuthorizePaymentResponse.\n * Use `create(OneClickAuthorizePaymentResponseSchema)` to create a new message.\n */\nexport const OneClickAuthorizePaymentResponseSchema: GenMessage<OneClickAuthorizePaymentResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 18);\n\n/**\n * @generated from message public_api.v1.PreOrderItem\n */\nexport type PreOrderItem = Message<\"public_api.v1.PreOrderItem\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: int32 quantity = 2;\n */\n quantity: number;\n};\n\n/**\n * Describes the message public_api.v1.PreOrderItem.\n * Use `create(PreOrderItemSchema)` to create a new message.\n */\nexport const PreOrderItemSchema: GenMessage<PreOrderItem> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 19);\n\n/**\n * @generated from message public_api.v1.GetPreOrderDetailsRequest\n */\nexport type GetPreOrderDetailsRequest = Message<\"public_api.v1.GetPreOrderDetailsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated public_api.v1.PreOrderItem items = 2;\n */\n items: PreOrderItem[];\n\n /**\n * @generated from field: optional string country_code = 3;\n */\n countryCode?: string;\n\n /**\n * @generated from field: optional string post_code = 4;\n */\n postCode?: string;\n\n /**\n * We can check if coupon code is available.\n *\n * @generated from field: optional string couponCode = 5;\n */\n couponCode?: string;\n\n /**\n * @generated from field: optional string email = 6;\n */\n email?: string;\n\n /**\n * @generated from field: optional string selected_delivery_method = 7;\n */\n selectedDeliveryMethod?: string;\n\n /**\n * @generated from field: optional string phone = 8;\n */\n phone?: string;\n};\n\n/**\n * Describes the message public_api.v1.GetPreOrderDetailsRequest.\n * Use `create(GetPreOrderDetailsRequestSchema)` to create a new message.\n */\nexport const GetPreOrderDetailsRequestSchema: GenMessage<GetPreOrderDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 20);\n\n/**\n * @generated from message public_api.v1.DeliveryMethod\n */\nexport type DeliveryMethod = Message<\"public_api.v1.DeliveryMethod\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: int32 amount = 2;\n */\n amount: number;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 4;\n */\n description?: string;\n\n /**\n * @generated from field: optional int32 min_days = 5;\n */\n minDays?: number;\n\n /**\n * @generated from field: optional int32 max_days = 6;\n */\n maxDays?: number;\n};\n\n/**\n * Describes the message public_api.v1.DeliveryMethod.\n * Use `create(DeliveryMethodSchema)` to create a new message.\n */\nexport const DeliveryMethodSchema: GenMessage<DeliveryMethod> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 21);\n\n/**\n * @generated from message public_api.v1.GetPreOrderDetailsResponse\n */\nexport type GetPreOrderDetailsResponse = Message<\"public_api.v1.GetPreOrderDetailsResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.DeliveryMethod methods = 1;\n */\n methods: DeliveryMethod[];\n\n /**\n * @generated from field: optional string couponCode = 2;\n */\n couponCode?: string;\n\n /**\n * @generated from field: optional string selected_delivery_method = 3;\n */\n selectedDeliveryMethod?: string;\n\n /**\n * @generated from field: optional int32 total_amount = 4;\n */\n totalAmount?: number;\n\n /**\n * @generated from field: optional int32 coupon_value = 5;\n */\n couponValue?: number;\n\n /**\n * Mainly use for Google Pay\n *\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: string country = 7;\n */\n country: string;\n};\n\n/**\n * Describes the message public_api.v1.GetPreOrderDetailsResponse.\n * Use `create(GetPreOrderDetailsResponseSchema)` to create a new message.\n */\nexport const GetPreOrderDetailsResponseSchema: GenMessage<GetPreOrderDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 22);\n\n/**\n * @generated from message public_api.v1.NotifyUserAboutProductAvailabilityRequest\n */\nexport type NotifyUserAboutProductAvailabilityRequest = Message<\"public_api.v1.NotifyUserAboutProductAvailabilityRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: string email = 3;\n */\n email: string;\n};\n\n/**\n * Describes the message public_api.v1.NotifyUserAboutProductAvailabilityRequest.\n * Use `create(NotifyUserAboutProductAvailabilityRequestSchema)` to create a new message.\n */\nexport const NotifyUserAboutProductAvailabilityRequestSchema: GenMessage<NotifyUserAboutProductAvailabilityRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 23);\n\n/**\n * @generated from message public_api.v1.ApplePayValidateMerchantRequest\n */\nexport type ApplePayValidateMerchantRequest = Message<\"public_api.v1.ApplePayValidateMerchantRequest\"> & {\n /**\n * @generated from field: string validation_url = 1;\n */\n validationUrl: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n};\n\n/**\n * Describes the message public_api.v1.ApplePayValidateMerchantRequest.\n * Use `create(ApplePayValidateMerchantRequestSchema)` to create a new message.\n */\nexport const ApplePayValidateMerchantRequestSchema: GenMessage<ApplePayValidateMerchantRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 24);\n\n/**\n * @generated from message public_api.v1.ApplePayValidateMerchantResponse\n */\nexport type ApplePayValidateMerchantResponse = Message<\"public_api.v1.ApplePayValidateMerchantResponse\"> & {\n /**\n * @generated from field: string merchant_session = 1;\n */\n merchantSession: string;\n};\n\n/**\n * Describes the message public_api.v1.ApplePayValidateMerchantResponse.\n * Use `create(ApplePayValidateMerchantResponseSchema)` to create a new message.\n */\nexport const ApplePayValidateMerchantResponseSchema: GenMessage<ApplePayValidateMerchantResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 25);\n\n/**\n * @generated from message public_api.v1.GetAvailableCountForProductRequest\n */\nexport type GetAvailableCountForProductRequest = Message<\"public_api.v1.GetAvailableCountForProductRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated string all_variants = 2;\n */\n allVariants: string[];\n};\n\n/**\n * Describes the message public_api.v1.GetAvailableCountForProductRequest.\n * Use `create(GetAvailableCountForProductRequestSchema)` to create a new message.\n */\nexport const GetAvailableCountForProductRequestSchema: GenMessage<GetAvailableCountForProductRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 26);\n\n/**\n * @generated from message public_api.v1.GetAvailableCountForProductResponse\n */\nexport type GetAvailableCountForProductResponse = Message<\"public_api.v1.GetAvailableCountForProductResponse\"> & {\n /**\n * @generated from field: map<string, public_api.v1.GetAvailableCountForProductResponse.AvailableCountForProduct> available_counts = 1;\n */\n availableCounts: { [key: string]: GetAvailableCountForProductResponse_AvailableCountForProduct };\n\n /**\n * @generated from field: optional public_api.v1.GetAvailableCountForProductResponse.Error error = 2;\n */\n error?: GetAvailableCountForProductResponse_Error;\n};\n\n/**\n * Describes the message public_api.v1.GetAvailableCountForProductResponse.\n * Use `create(GetAvailableCountForProductResponseSchema)` to create a new message.\n */\nexport const GetAvailableCountForProductResponseSchema: GenMessage<GetAvailableCountForProductResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 27);\n\n/**\n * @generated from message public_api.v1.GetAvailableCountForProductResponse.AvailableCountForProduct\n */\nexport type GetAvailableCountForProductResponse_AvailableCountForProduct = Message<\"public_api.v1.GetAvailableCountForProductResponse.AvailableCountForProduct\"> & {\n /**\n * @generated from field: int32 available_quantity_to_order = 1;\n */\n availableQuantityToOrder: number;\n\n /**\n * @generated from field: bool can_back = 2;\n */\n canBack: boolean;\n};\n\n/**\n * Describes the message public_api.v1.GetAvailableCountForProductResponse.AvailableCountForProduct.\n * Use `create(GetAvailableCountForProductResponse_AvailableCountForProductSchema)` to create a new message.\n */\nexport const GetAvailableCountForProductResponse_AvailableCountForProductSchema: GenMessage<GetAvailableCountForProductResponse_AvailableCountForProduct> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 27, 0);\n\n/**\n * @generated from enum public_api.v1.GetAvailableCountForProductResponse.Error\n */\nexport enum GetAvailableCountForProductResponse_Error {\n /**\n * @generated from enum value: ERROR_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: ERROR_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: ERROR_PRODUCT_NOT_AVAILABLE = 2;\n */\n PRODUCT_NOT_AVAILABLE = 2,\n\n /**\n * @generated from enum value: ERROR_PRODUCT_NOT_AVAILABLE_BUT_CAN_BACK = 3;\n */\n PRODUCT_NOT_AVAILABLE_BUT_CAN_BACK = 3,\n}\n\n/**\n * Describes the enum public_api.v1.GetAvailableCountForProductResponse.Error.\n */\nexport const GetAvailableCountForProductResponse_ErrorSchema: GenEnum<GetAvailableCountForProductResponse_Error> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 27, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelDeleteAccountRequest\n */\nexport type UserPanelDeleteAccountRequest = Message<\"public_api.v1.UserPanelDeleteAccountRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelDeleteAccountRequest.\n * Use `create(UserPanelDeleteAccountRequestSchema)` to create a new message.\n */\nexport const UserPanelDeleteAccountRequestSchema: GenMessage<UserPanelDeleteAccountRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 28);\n\n/**\n * @generated from message public_api.v1.DidBuyProductRequest\n */\nexport type DidBuyProductRequest = Message<\"public_api.v1.DidBuyProductRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n};\n\n/**\n * Describes the message public_api.v1.DidBuyProductRequest.\n * Use `create(DidBuyProductRequestSchema)` to create a new message.\n */\nexport const DidBuyProductRequestSchema: GenMessage<DidBuyProductRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 29);\n\n/**\n * @generated from message public_api.v1.UpdateNotificationSettingsRequest\n */\nexport type UpdateNotificationSettingsRequest = Message<\"public_api.v1.UpdateNotificationSettingsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated public_api.v1.UpdateNotificationSettingsRequest.Group modifications = 3;\n */\n modifications: UpdateNotificationSettingsRequest_Group[];\n\n /**\n * @generated from field: repeated public_api.v1.NotificationMethod enabled_methods = 4;\n */\n enabledMethods: NotificationMethod[];\n};\n\n/**\n * Describes the message public_api.v1.UpdateNotificationSettingsRequest.\n * Use `create(UpdateNotificationSettingsRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationSettingsRequestSchema: GenMessage<UpdateNotificationSettingsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 30);\n\n/**\n * @generated from message public_api.v1.UpdateNotificationSettingsRequest.Group\n */\nexport type UpdateNotificationSettingsRequest_Group = Message<\"public_api.v1.UpdateNotificationSettingsRequest.Group\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: bool enabled = 2;\n */\n enabled: boolean;\n};\n\n/**\n * Describes the message public_api.v1.UpdateNotificationSettingsRequest.Group.\n * Use `create(UpdateNotificationSettingsRequest_GroupSchema)` to create a new message.\n */\nexport const UpdateNotificationSettingsRequest_GroupSchema: GenMessage<UpdateNotificationSettingsRequest_Group> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 30, 0);\n\n/**\n * @generated from message public_api.v1.UpdateGlobalNotificationSettingsRequest\n */\nexport type UpdateGlobalNotificationSettingsRequest = Message<\"public_api.v1.UpdateGlobalNotificationSettingsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: bool is_muted = 2;\n */\n isMuted: boolean;\n};\n\n/**\n * Describes the message public_api.v1.UpdateGlobalNotificationSettingsRequest.\n * Use `create(UpdateGlobalNotificationSettingsRequestSchema)` to create a new message.\n */\nexport const UpdateGlobalNotificationSettingsRequestSchema: GenMessage<UpdateGlobalNotificationSettingsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 31);\n\n/**\n * @generated from message public_api.v1.GetNotificationSettingsDetailsRequest\n */\nexport type GetNotificationSettingsDetailsRequest = Message<\"public_api.v1.GetNotificationSettingsDetailsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationSettingsDetailsRequest.\n * Use `create(GetNotificationSettingsDetailsRequestSchema)` to create a new message.\n */\nexport const GetNotificationSettingsDetailsRequestSchema: GenMessage<GetNotificationSettingsDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 32);\n\n/**\n * @generated from message public_api.v1.NotificationGroup\n */\nexport type NotificationGroup = Message<\"public_api.v1.NotificationGroup\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: bool enabled = 4;\n */\n enabled: boolean;\n\n /**\n * @generated from field: common.v1.NotificationGroupHowOften how_often = 5;\n */\n howOften: NotificationGroupHowOften;\n};\n\n/**\n * Describes the message public_api.v1.NotificationGroup.\n * Use `create(NotificationGroupSchema)` to create a new message.\n */\nexport const NotificationGroupSchema: GenMessage<NotificationGroup> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 33);\n\n/**\n * @generated from message public_api.v1.GetNotificationSettingsDetailsResponse\n */\nexport type GetNotificationSettingsDetailsResponse = Message<\"public_api.v1.GetNotificationSettingsDetailsResponse\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional public_api.v1.ProjectTheme theme = 3;\n */\n theme?: ProjectTheme;\n\n /**\n * @generated from field: repeated public_api.v1.NotificationMethod available_methods = 4;\n */\n availableMethods: NotificationMethod[];\n\n /**\n * @generated from field: repeated public_api.v1.NotificationMethod enabled_methods = 5;\n */\n enabledMethods: NotificationMethod[];\n\n /**\n * @generated from field: repeated public_api.v1.NotificationGroup groups = 6;\n */\n groups: NotificationGroup[];\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationSettingsDetailsResponse.\n * Use `create(GetNotificationSettingsDetailsResponseSchema)` to create a new message.\n */\nexport const GetNotificationSettingsDetailsResponseSchema: GenMessage<GetNotificationSettingsDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 34);\n\n/**\n * @generated from message public_api.v1.GetNotificationSettingsRequest\n */\nexport type GetNotificationSettingsRequest = Message<\"public_api.v1.GetNotificationSettingsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: bool all = 2;\n */\n all: boolean;\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationSettingsRequest.\n * Use `create(GetNotificationSettingsRequestSchema)` to create a new message.\n */\nexport const GetNotificationSettingsRequestSchema: GenMessage<GetNotificationSettingsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 35);\n\n/**\n * @generated from message public_api.v1.GetNotificationSettingsResponse\n */\nexport type GetNotificationSettingsResponse = Message<\"public_api.v1.GetNotificationSettingsResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.GetNotificationSettingsResponse.Project projects = 1;\n */\n projects: GetNotificationSettingsResponse_Project[];\n\n /**\n * @generated from field: bool is_muted = 2;\n */\n isMuted: boolean;\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationSettingsResponse.\n * Use `create(GetNotificationSettingsResponseSchema)` to create a new message.\n */\nexport const GetNotificationSettingsResponseSchema: GenMessage<GetNotificationSettingsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 36);\n\n/**\n * @generated from message public_api.v1.GetNotificationSettingsResponse.Project\n */\nexport type GetNotificationSettingsResponse_Project = Message<\"public_api.v1.GetNotificationSettingsResponse.Project\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: public_api.v1.GetNotificationSettingsResponse.Status status = 3;\n */\n status: GetNotificationSettingsResponse_Status;\n\n /**\n * @generated from field: optional public_api.v1.ProjectTheme theme = 4;\n */\n theme?: ProjectTheme;\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationSettingsResponse.Project.\n * Use `create(GetNotificationSettingsResponse_ProjectSchema)` to create a new message.\n */\nexport const GetNotificationSettingsResponse_ProjectSchema: GenMessage<GetNotificationSettingsResponse_Project> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 36, 0);\n\n/**\n * @generated from enum public_api.v1.GetNotificationSettingsResponse.Status\n */\nexport enum GetNotificationSettingsResponse_Status {\n /**\n * @generated from enum value: STATUS_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: STATUS_ENABLED = 1;\n */\n ENABLED = 1,\n\n /**\n * @generated from enum value: STATUS_DISABLED = 2;\n */\n DISABLED = 2,\n}\n\n/**\n * Describes the enum public_api.v1.GetNotificationSettingsResponse.Status.\n */\nexport const GetNotificationSettingsResponse_StatusSchema: GenEnum<GetNotificationSettingsResponse_Status> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 36, 0);\n\n/**\n * @generated from message public_api.v1.GetNotificationHistoryRequest\n */\nexport type GetNotificationHistoryRequest = Message<\"public_api.v1.GetNotificationHistoryRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: optional string project_id = 2;\n */\n projectId?: string;\n\n /**\n * @generated from field: repeated public_api.v1.NotificationMethod methods = 3;\n */\n methods: NotificationMethod[];\n\n /**\n * @generated from field: int32 page_size = 4;\n */\n pageSize: number;\n\n /**\n * @generated from field: optional string page_token = 5;\n */\n pageToken?: string;\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationHistoryRequest.\n * Use `create(GetNotificationHistoryRequestSchema)` to create a new message.\n */\nexport const GetNotificationHistoryRequestSchema: GenMessage<GetNotificationHistoryRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 37);\n\n/**\n * @generated from message public_api.v1.NotificationHistoryItem\n */\nexport type NotificationHistoryItem = Message<\"public_api.v1.NotificationHistoryItem\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string notification_id = 2;\n */\n notificationId: string;\n\n /**\n * @generated from field: public_api.v1.NotificationMethod method = 3;\n */\n method: NotificationMethod;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 4;\n */\n sentAt?: Timestamp;\n\n /**\n * @generated from field: string title = 5;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 6;\n */\n subtitle?: string;\n\n /**\n * @generated from field: optional string content = 7;\n */\n content?: string;\n\n /**\n * @generated from field: optional string image_url = 8;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: optional string open_url = 10;\n */\n openUrl?: string;\n\n /**\n * @generated from field: public_api.v1.NotificationHistoryItem.Sender sender = 9;\n */\n sender?: NotificationHistoryItem_Sender;\n};\n\n/**\n * Describes the message public_api.v1.NotificationHistoryItem.\n * Use `create(NotificationHistoryItemSchema)` to create a new message.\n */\nexport const NotificationHistoryItemSchema: GenMessage<NotificationHistoryItem> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 38);\n\n/**\n * @generated from message public_api.v1.NotificationHistoryItem.Sender\n */\nexport type NotificationHistoryItem_Sender = Message<\"public_api.v1.NotificationHistoryItem.Sender\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string display_name = 2;\n */\n displayName: string;\n\n /**\n * @generated from field: optional public_api.v1.ProjectTheme theme = 3;\n */\n theme?: ProjectTheme;\n};\n\n/**\n * Describes the message public_api.v1.NotificationHistoryItem.Sender.\n * Use `create(NotificationHistoryItem_SenderSchema)` to create a new message.\n */\nexport const NotificationHistoryItem_SenderSchema: GenMessage<NotificationHistoryItem_Sender> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 38, 0);\n\n/**\n * @generated from message public_api.v1.GetNotificationHistoryResponse\n */\nexport type GetNotificationHistoryResponse = Message<\"public_api.v1.GetNotificationHistoryResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.NotificationHistoryItem notifications = 1;\n */\n notifications: NotificationHistoryItem[];\n\n /**\n * @generated from field: optional string next_page_token = 2;\n */\n nextPageToken?: string;\n};\n\n/**\n * Describes the message public_api.v1.GetNotificationHistoryResponse.\n * Use `create(GetNotificationHistoryResponseSchema)` to create a new message.\n */\nexport const GetNotificationHistoryResponseSchema: GenMessage<GetNotificationHistoryResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 39);\n\n/**\n * @generated from message public_api.v1.UserPanelPushGetAvailableCompaniesRequest\n */\nexport type UserPanelPushGetAvailableCompaniesRequest = Message<\"public_api.v1.UserPanelPushGetAvailableCompaniesRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelPushGetAvailableCompaniesRequest.\n * Use `create(UserPanelPushGetAvailableCompaniesRequestSchema)` to create a new message.\n */\nexport const UserPanelPushGetAvailableCompaniesRequestSchema: GenMessage<UserPanelPushGetAvailableCompaniesRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 40);\n\n/**\n * @generated from message public_api.v1.UserPanelPushGetAvailableCompaniesResponse\n */\nexport type UserPanelPushGetAvailableCompaniesResponse = Message<\"public_api.v1.UserPanelPushGetAvailableCompaniesResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Company companies = 1;\n */\n companies: UserPanelPushGetAvailableCompaniesResponse_Company[];\n};\n\n/**\n * Describes the message public_api.v1.UserPanelPushGetAvailableCompaniesResponse.\n * Use `create(UserPanelPushGetAvailableCompaniesResponseSchema)` to create a new message.\n */\nexport const UserPanelPushGetAvailableCompaniesResponseSchema: GenMessage<UserPanelPushGetAvailableCompaniesResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 41);\n\n/**\n * @generated from message public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Group\n */\nexport type UserPanelPushGetAvailableCompaniesResponse_Group = Message<\"public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Group\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional string how_often = 4;\n */\n howOften?: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Group.\n * Use `create(UserPanelPushGetAvailableCompaniesResponse_GroupSchema)` to create a new message.\n */\nexport const UserPanelPushGetAvailableCompaniesResponse_GroupSchema: GenMessage<UserPanelPushGetAvailableCompaniesResponse_Group> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 41, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Company\n */\nexport type UserPanelPushGetAvailableCompaniesResponse_Company = Message<\"public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Company\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: repeated public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Group groups = 3;\n */\n groups: UserPanelPushGetAvailableCompaniesResponse_Group[];\n};\n\n/**\n * Describes the message public_api.v1.UserPanelPushGetAvailableCompaniesResponse.Company.\n * Use `create(UserPanelPushGetAvailableCompaniesResponse_CompanySchema)` to create a new message.\n */\nexport const UserPanelPushGetAvailableCompaniesResponse_CompanySchema: GenMessage<UserPanelPushGetAvailableCompaniesResponse_Company> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 41, 1);\n\n/**\n * @generated from message public_api.v1.ShouldShopProductsResponse\n */\nexport type ShouldShopProductsResponse = Message<\"public_api.v1.ShouldShopProductsResponse\"> & {\n /**\n * @generated from field: bool is_visible = 1;\n */\n isVisible: boolean;\n};\n\n/**\n * Describes the message public_api.v1.ShouldShopProductsResponse.\n * Use `create(ShouldShopProductsResponseSchema)` to create a new message.\n */\nexport const ShouldShopProductsResponseSchema: GenMessage<ShouldShopProductsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 42);\n\n/**\n * @generated from message public_api.v1.ShouldShowGuestCatalogResponse\n */\nexport type ShouldShowGuestCatalogResponse = Message<\"public_api.v1.ShouldShowGuestCatalogResponse\"> & {\n /**\n * @generated from field: bool is_visible = 1;\n */\n isVisible: boolean;\n};\n\n/**\n * Describes the message public_api.v1.ShouldShowGuestCatalogResponse.\n * Use `create(ShouldShowGuestCatalogResponseSchema)` to create a new message.\n */\nexport const ShouldShowGuestCatalogResponseSchema: GenMessage<ShouldShowGuestCatalogResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 43);\n\n/**\n * @generated from message public_api.v1.GuestCatalogProduct\n */\nexport type GuestCatalogProduct = Message<\"public_api.v1.GuestCatalogProduct\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string cover_image_url = 3;\n */\n coverImageUrl: string;\n\n /**\n * @generated from field: public_api.v1.UserProductType product_type = 4;\n */\n productType: UserProductType;\n};\n\n/**\n * Describes the message public_api.v1.GuestCatalogProduct.\n * Use `create(GuestCatalogProductSchema)` to create a new message.\n */\nexport const GuestCatalogProductSchema: GenMessage<GuestCatalogProduct> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 44);\n\n/**\n * @generated from message public_api.v1.GetGuestCatalogResponse\n */\nexport type GetGuestCatalogResponse = Message<\"public_api.v1.GetGuestCatalogResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.GuestCatalogProduct products = 1;\n */\n products: GuestCatalogProduct[];\n};\n\n/**\n * Describes the message public_api.v1.GetGuestCatalogResponse.\n * Use `create(GetGuestCatalogResponseSchema)` to create a new message.\n */\nexport const GetGuestCatalogResponseSchema: GenMessage<GetGuestCatalogResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 45);\n\n/**\n * @generated from message public_api.v1.UserPanelResolveProductAccessRequest\n */\nexport type UserPanelResolveProductAccessRequest = Message<\"public_api.v1.UserPanelResolveProductAccessRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: public_api.v1.UserProductType product_type = 3;\n */\n productType: UserProductType;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelResolveProductAccessRequest.\n * Use `create(UserPanelResolveProductAccessRequestSchema)` to create a new message.\n */\nexport const UserPanelResolveProductAccessRequestSchema: GenMessage<UserPanelResolveProductAccessRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 46);\n\n/**\n * @generated from message public_api.v1.UserPanelResolveProductAccessResponse\n */\nexport type UserPanelResolveProductAccessResponse = Message<\"public_api.v1.UserPanelResolveProductAccessResponse\"> & {\n /**\n * @generated from field: public_api.v1.UserPanelResolveProductAccessResponse.Status status = 1;\n */\n status: UserPanelResolveProductAccessResponse_Status;\n\n /**\n * @generated from field: optional string access_id = 2;\n */\n accessId?: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelResolveProductAccessResponse.\n * Use `create(UserPanelResolveProductAccessResponseSchema)` to create a new message.\n */\nexport const UserPanelResolveProductAccessResponseSchema: GenMessage<UserPanelResolveProductAccessResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 47);\n\n/**\n * @generated from enum public_api.v1.UserPanelResolveProductAccessResponse.Status\n */\nexport enum UserPanelResolveProductAccessResponse_Status {\n /**\n * @generated from enum value: STATUS_UNSPECIFIED = 0;\n */\n STATUS_UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: OWNED = 1;\n */\n OWNED = 1,\n\n /**\n * @generated from enum value: NOT_OWNED = 2;\n */\n NOT_OWNED = 2,\n\n /**\n * @generated from enum value: UNAVAILABLE = 3;\n */\n UNAVAILABLE = 3,\n}\n\n/**\n * Describes the enum public_api.v1.UserPanelResolveProductAccessResponse.Status.\n */\nexport const UserPanelResolveProductAccessResponse_StatusSchema: GenEnum<UserPanelResolveProductAccessResponse_Status> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 47, 0);\n\n/**\n * @generated from message public_api.v1.GetShopProductsRequest\n */\nexport type GetShopProductsRequest = Message<\"public_api.v1.GetShopProductsRequest\"> & {\n /**\n * @generated from field: optional string access_token = 1;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message public_api.v1.GetShopProductsRequest.\n * Use `create(GetShopProductsRequestSchema)` to create a new message.\n */\nexport const GetShopProductsRequestSchema: GenMessage<GetShopProductsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 48);\n\n/**\n * @generated from message public_api.v1.GetShopProductsResponse\n */\nexport type GetShopProductsResponse = Message<\"public_api.v1.GetShopProductsResponse\"> & {\n /**\n * @generated from field: repeated public_api.v1.GetShopProductsResponse.Product products = 5;\n */\n products: GetShopProductsResponse_Product[];\n};\n\n/**\n * Describes the message public_api.v1.GetShopProductsResponse.\n * Use `create(GetShopProductsResponseSchema)` to create a new message.\n */\nexport const GetShopProductsResponseSchema: GenMessage<GetShopProductsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 49);\n\n/**\n * @generated from message public_api.v1.GetShopProductsResponse.Product\n */\nexport type GetShopProductsResponse_Product = Message<\"public_api.v1.GetShopProductsResponse.Product\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string image_url = 3;\n */\n imageUrl: string;\n\n /**\n * @generated from field: string price = 4;\n */\n price: string;\n\n /**\n * @generated from field: optional bool is_already_bought = 5;\n */\n isAlreadyBought?: boolean;\n};\n\n/**\n * Describes the message public_api.v1.GetShopProductsResponse.Product.\n * Use `create(GetShopProductsResponse_ProductSchema)` to create a new message.\n */\nexport const GetShopProductsResponse_ProductSchema: GenMessage<GetShopProductsResponse_Product> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 49, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelGetFileDetailsResponse\n */\nexport type UserPanelGetFileDetailsResponse = Message<\"public_api.v1.UserPanelGetFileDetailsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelGetFileDetailsResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.UserPanelGetFileDetailsResponse.Result success = 1;\n */\n value: UserPanelGetFileDetailsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetFileDetailsResponse.\n * Use `create(UserPanelGetFileDetailsResponseSchema)` to create a new message.\n */\nexport const UserPanelGetFileDetailsResponseSchema: GenMessage<UserPanelGetFileDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 50);\n\n/**\n * @generated from message public_api.v1.UserPanelGetFileDetailsResponse.Result\n */\nexport type UserPanelGetFileDetailsResponse_Result = Message<\"public_api.v1.UserPanelGetFileDetailsResponse.Result\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated string files = 2;\n */\n files: string[];\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetFileDetailsResponse.Result.\n * Use `create(UserPanelGetFileDetailsResponse_ResultSchema)` to create a new message.\n */\nexport const UserPanelGetFileDetailsResponse_ResultSchema: GenMessage<UserPanelGetFileDetailsResponse_Result> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 50, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelGetFileDetailsRequest\n */\nexport type UserPanelGetFileDetailsRequest = Message<\"public_api.v1.UserPanelGetFileDetailsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string access_id = 2;\n */\n accessId: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetFileDetailsRequest.\n * Use `create(UserPanelGetFileDetailsRequestSchema)` to create a new message.\n */\nexport const UserPanelGetFileDetailsRequestSchema: GenMessage<UserPanelGetFileDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 51);\n\n/**\n * @generated from message public_api.v1.UserPanelGetTicketDetailsResponse\n */\nexport type UserPanelGetTicketDetailsResponse = Message<\"public_api.v1.UserPanelGetTicketDetailsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelGetTicketDetailsResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.UserPanelGetTicketDetailsResponse.Result success = 1;\n */\n value: UserPanelGetTicketDetailsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetTicketDetailsResponse.\n * Use `create(UserPanelGetTicketDetailsResponseSchema)` to create a new message.\n */\nexport const UserPanelGetTicketDetailsResponseSchema: GenMessage<UserPanelGetTicketDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 52);\n\n/**\n * @generated from message public_api.v1.UserPanelGetTicketDetailsResponse.Result\n */\nexport type UserPanelGetTicketDetailsResponse_Result = Message<\"public_api.v1.UserPanelGetTicketDetailsResponse.Result\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string ticket_url = 2;\n */\n ticketUrl: string;\n\n /**\n * @generated from field: string product_name = 3;\n */\n productName: string;\n\n /**\n * @generated from field: string product_image_url = 4;\n */\n productImageUrl: string;\n\n /**\n * @generated from field: optional string google_wallet_url = 5;\n */\n googleWalletUrl?: string;\n\n /**\n * @generated from field: optional string apple_wallet_url = 6;\n */\n appleWalletUrl?: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetTicketDetailsResponse.Result.\n * Use `create(UserPanelGetTicketDetailsResponse_ResultSchema)` to create a new message.\n */\nexport const UserPanelGetTicketDetailsResponse_ResultSchema: GenMessage<UserPanelGetTicketDetailsResponse_Result> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 52, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelGetTicketDetailsRequest\n */\nexport type UserPanelGetTicketDetailsRequest = Message<\"public_api.v1.UserPanelGetTicketDetailsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string access_id = 2;\n */\n accessId: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetTicketDetailsRequest.\n * Use `create(UserPanelGetTicketDetailsRequestSchema)` to create a new message.\n */\nexport const UserPanelGetTicketDetailsRequestSchema: GenMessage<UserPanelGetTicketDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 53);\n\n/**\n * @generated from message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse\n */\nexport type UserPanelGetAudiobookDetailsDownloadURLsResponse = Message<\"public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.Result success = 1;\n */\n value: UserPanelGetAudiobookDetailsDownloadURLsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.\n * Use `create(UserPanelGetAudiobookDetailsDownloadURLsResponseSchema)` to create a new message.\n */\nexport const UserPanelGetAudiobookDetailsDownloadURLsResponseSchema: GenMessage<UserPanelGetAudiobookDetailsDownloadURLsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 54);\n\n/**\n * @generated from message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.AudiobookDownloadDetails\n */\nexport type UserPanelGetAudiobookDetailsDownloadURLsResponse_AudiobookDownloadDetails = Message<\"public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.AudiobookDownloadDetails\"> & {\n /**\n * @generated from field: string chapter_id = 1;\n */\n chapterId: string;\n\n /**\n * @generated from field: string public_url = 2;\n */\n publicUrl: string;\n\n /**\n * @generated from field: optional string downloadable_url = 3;\n */\n downloadableUrl?: string;\n\n /**\n * @generated from field: optional int32 duration = 4;\n */\n duration?: number;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.AudiobookDownloadDetails.\n * Use `create(UserPanelGetAudiobookDetailsDownloadURLsResponse_AudiobookDownloadDetailsSchema)` to create a new message.\n */\nexport const UserPanelGetAudiobookDetailsDownloadURLsResponse_AudiobookDownloadDetailsSchema: GenMessage<UserPanelGetAudiobookDetailsDownloadURLsResponse_AudiobookDownloadDetails> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 54, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.Result\n */\nexport type UserPanelGetAudiobookDetailsDownloadURLsResponse_Result = Message<\"public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.Result\"> & {\n /**\n * @generated from field: repeated public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.AudiobookDownloadDetails audiobook_download_details = 1;\n */\n audiobookDownloadDetails: UserPanelGetAudiobookDetailsDownloadURLsResponse_AudiobookDownloadDetails[];\n\n /**\n * @generated from field: optional bool is_available_to_download_in_mobile_app = 2;\n */\n isAvailableToDownloadInMobileApp?: boolean;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsResponse.Result.\n * Use `create(UserPanelGetAudiobookDetailsDownloadURLsResponse_ResultSchema)` to create a new message.\n */\nexport const UserPanelGetAudiobookDetailsDownloadURLsResponse_ResultSchema: GenMessage<UserPanelGetAudiobookDetailsDownloadURLsResponse_Result> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 54, 1);\n\n/**\n * @generated from message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsRequest\n */\nexport type UserPanelGetAudiobookDetailsDownloadURLsRequest = Message<\"public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string access_id = 2;\n */\n accessId: string;\n\n /**\n * @generated from field: optional bool is_browser = 3;\n */\n isBrowser?: boolean;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetAudiobookDetailsDownloadURLsRequest.\n * Use `create(UserPanelGetAudiobookDetailsDownloadURLsRequestSchema)` to create a new message.\n */\nexport const UserPanelGetAudiobookDetailsDownloadURLsRequestSchema: GenMessage<UserPanelGetAudiobookDetailsDownloadURLsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 55);\n\n/**\n * @generated from message public_api.v1.UserPanelGetAudiobookDetailsResponse\n */\nexport type UserPanelGetAudiobookDetailsResponse = Message<\"public_api.v1.UserPanelGetAudiobookDetailsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelGetAudiobookDetailsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.audiobooks.v1.Audiobook audiobook = 1;\n */\n value: Audiobook$1;\n case: \"audiobook\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetAudiobookDetailsResponse.\n * Use `create(UserPanelGetAudiobookDetailsResponseSchema)` to create a new message.\n */\nexport const UserPanelGetAudiobookDetailsResponseSchema: GenMessage<UserPanelGetAudiobookDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 56);\n\n/**\n * @generated from message public_api.v1.UserPanelGetAudiobookDetailsRequest\n */\nexport type UserPanelGetAudiobookDetailsRequest = Message<\"public_api.v1.UserPanelGetAudiobookDetailsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string access_id = 2;\n */\n accessId: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetAudiobookDetailsRequest.\n * Use `create(UserPanelGetAudiobookDetailsRequestSchema)` to create a new message.\n */\nexport const UserPanelGetAudiobookDetailsRequestSchema: GenMessage<UserPanelGetAudiobookDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 57);\n\n/**\n * @generated from message public_api.v1.UserPanelGetProductsRequest\n */\nexport type UserPanelGetProductsRequest = Message<\"public_api.v1.UserPanelGetProductsRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetProductsRequest.\n * Use `create(UserPanelGetProductsRequestSchema)` to create a new message.\n */\nexport const UserPanelGetProductsRequestSchema: GenMessage<UserPanelGetProductsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 58);\n\n/**\n * @generated from message public_api.v1.UserPanelGetProductsResponse\n */\nexport type UserPanelGetProductsResponse = Message<\"public_api.v1.UserPanelGetProductsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelGetProductsResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.UserPanelGetProductsResponse.Result success = 1;\n */\n value: UserPanelGetProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetProductsResponse.\n * Use `create(UserPanelGetProductsResponseSchema)` to create a new message.\n */\nexport const UserPanelGetProductsResponseSchema: GenMessage<UserPanelGetProductsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 59);\n\n/**\n * @generated from message public_api.v1.UserPanelGetProductsResponse.Result\n */\nexport type UserPanelGetProductsResponse_Result = Message<\"public_api.v1.UserPanelGetProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated public_api.v1.UserProduct products = 1;\n */\n products: UserProduct[];\n};\n\n/**\n * Describes the message public_api.v1.UserPanelGetProductsResponse.Result.\n * Use `create(UserPanelGetProductsResponse_ResultSchema)` to create a new message.\n */\nexport const UserPanelGetProductsResponse_ResultSchema: GenMessage<UserPanelGetProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 59, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelLogoutRequest\n */\nexport type UserPanelLogoutRequest = Message<\"public_api.v1.UserPanelLogoutRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelLogoutRequest.\n * Use `create(UserPanelLogoutRequestSchema)` to create a new message.\n */\nexport const UserPanelLogoutRequestSchema: GenMessage<UserPanelLogoutRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 60);\n\n/**\n * @generated from message public_api.v1.UserPanelLoginWithCodeResponse\n */\nexport type UserPanelLoginWithCodeResponse = Message<\"public_api.v1.UserPanelLoginWithCodeResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelLoginWithCodeResponse.result\n */\n result: {\n /**\n * @generated from field: string access_token = 1;\n */\n value: string;\n case: \"accessToken\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: optional string email = 3;\n */\n email?: string;\n\n /**\n * @generated from field: optional string user_id = 4;\n */\n userId?: string;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelLoginWithCodeResponse.\n * Use `create(UserPanelLoginWithCodeResponseSchema)` to create a new message.\n */\nexport const UserPanelLoginWithCodeResponseSchema: GenMessage<UserPanelLoginWithCodeResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 61);\n\n/**\n * @generated from message public_api.v1.UserPanelLoginWithCodeRequest\n */\nexport type UserPanelLoginWithCodeRequest = Message<\"public_api.v1.UserPanelLoginWithCodeRequest\"> & {\n /**\n * @generated from field: int32 code = 1;\n */\n code: number;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelLoginWithCodeRequest.\n * Use `create(UserPanelLoginWithCodeRequestSchema)` to create a new message.\n */\nexport const UserPanelLoginWithCodeRequestSchema: GenMessage<UserPanelLoginWithCodeRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 62);\n\n/**\n * @generated from message public_api.v1.UserPanelLoginResponse\n */\nexport type UserPanelLoginResponse = Message<\"public_api.v1.UserPanelLoginResponse\"> & {\n /**\n * @generated from oneof public_api.v1.UserPanelLoginResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.UserPanelLoginResponse.Result success = 1;\n */\n value: UserPanelLoginResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.UserPanelLoginResponse.\n * Use `create(UserPanelLoginResponseSchema)` to create a new message.\n */\nexport const UserPanelLoginResponseSchema: GenMessage<UserPanelLoginResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 63);\n\n/**\n * @generated from message public_api.v1.UserPanelLoginResponse.Result\n */\nexport type UserPanelLoginResponse_Result = Message<\"public_api.v1.UserPanelLoginResponse.Result\"> & {\n /**\n * @generated from field: int32 retry_in = 1;\n */\n retryIn: number;\n\n /**\n * @generated from field: public_api.v1.LoginCodeDeliveryMethod delivery_method = 2;\n */\n deliveryMethod: LoginCodeDeliveryMethod;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelLoginResponse.Result.\n * Use `create(UserPanelLoginResponse_ResultSchema)` to create a new message.\n */\nexport const UserPanelLoginResponse_ResultSchema: GenMessage<UserPanelLoginResponse_Result> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 63, 0);\n\n/**\n * @generated from message public_api.v1.UserPanelLoginRequest\n */\nexport type UserPanelLoginRequest = Message<\"public_api.v1.UserPanelLoginRequest\"> & {\n /**\n * @generated from field: string email = 1;\n */\n email: string;\n\n /**\n * @generated from field: optional bool regulations_accept = 2;\n */\n regulationsAccept?: boolean;\n\n /**\n * @generated from field: public_api.v1.LoginCodeDeliveryMethod delivery_method = 3;\n */\n deliveryMethod: LoginCodeDeliveryMethod;\n};\n\n/**\n * Describes the message public_api.v1.UserPanelLoginRequest.\n * Use `create(UserPanelLoginRequestSchema)` to create a new message.\n */\nexport const UserPanelLoginRequestSchema: GenMessage<UserPanelLoginRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 64);\n\n/**\n * @generated from message public_api.v1.GetOrderRetryUrlRequest\n */\nexport type GetOrderRetryUrlRequest = Message<\"public_api.v1.GetOrderRetryUrlRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderRetryUrlRequest.\n * Use `create(GetOrderRetryUrlRequestSchema)` to create a new message.\n */\nexport const GetOrderRetryUrlRequestSchema: GenMessage<GetOrderRetryUrlRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 65);\n\n/**\n * @generated from message public_api.v1.GetOrderRetryUrlResponse\n */\nexport type GetOrderRetryUrlResponse = Message<\"public_api.v1.GetOrderRetryUrlResponse\"> & {\n /**\n * @generated from oneof public_api.v1.GetOrderRetryUrlResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.GetOrderRetryUrlResponse.Success url = 1;\n */\n value: GetOrderRetryUrlResponse_Success;\n case: \"url\";\n } | {\n /**\n * @generated from field: string failure = 2;\n */\n value: string;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.GetOrderRetryUrlResponse.\n * Use `create(GetOrderRetryUrlResponseSchema)` to create a new message.\n */\nexport const GetOrderRetryUrlResponseSchema: GenMessage<GetOrderRetryUrlResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 66);\n\n/**\n * @generated from message public_api.v1.GetOrderRetryUrlResponse.Success\n */\nexport type GetOrderRetryUrlResponse_Success = Message<\"public_api.v1.GetOrderRetryUrlResponse.Success\"> & {\n /**\n * @generated from field: string url = 1;\n */\n url: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderRetryUrlResponse.Success.\n * Use `create(GetOrderRetryUrlResponse_SuccessSchema)` to create a new message.\n */\nexport const GetOrderRetryUrlResponse_SuccessSchema: GenMessage<GetOrderRetryUrlResponse_Success> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 66, 0);\n\n/**\n * @generated from message public_api.v1.GetOrderRequest\n */\nexport type GetOrderRequest = Message<\"public_api.v1.GetOrderRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderRequest.\n * Use `create(GetOrderRequestSchema)` to create a new message.\n */\nexport const GetOrderRequestSchema: GenMessage<GetOrderRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 67);\n\n/**\n * @generated from message public_api.v1.GetOrderResponse\n */\nexport type GetOrderResponse = Message<\"public_api.v1.GetOrderResponse\"> & {\n /**\n * @generated from field: optional string id = 1;\n */\n id?: string;\n\n /**\n * @generated from field: repeated public_api.v1.Item items = 2;\n */\n items: Item[];\n\n /**\n * @generated from field: public_api.v1.OrderDetails details = 3;\n */\n details?: OrderDetails;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderResponse.\n * Use `create(GetOrderResponseSchema)` to create a new message.\n */\nexport const GetOrderResponseSchema: GenMessage<GetOrderResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 68);\n\n/**\n * @generated from message public_api.v1.OrderDetails\n */\nexport type OrderDetails = Message<\"public_api.v1.OrderDetails\"> & {\n /**\n * @generated from field: repeated public_api.v1.OrderDetails.SingleItem items = 1;\n */\n items: OrderDetails_SingleItem[];\n\n /**\n * @generated from field: common.v1.Gateway gateway = 2;\n */\n gateway: Gateway;\n};\n\n/**\n * Describes the message public_api.v1.OrderDetails.\n * Use `create(OrderDetailsSchema)` to create a new message.\n */\nexport const OrderDetailsSchema: GenMessage<OrderDetails> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 69);\n\n/**\n * @generated from message public_api.v1.OrderDetails.SingleItem\n */\nexport type OrderDetails_SingleItem = Message<\"public_api.v1.OrderDetails.SingleItem\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: optional string image_url = 2;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: int32 quantity = 4;\n */\n quantity: number;\n\n /**\n * @generated from field: int64 price_amount = 5;\n */\n priceAmount: bigint;\n\n /**\n * @generated from field: string price_currency = 6;\n */\n priceCurrency: string;\n};\n\n/**\n * Describes the message public_api.v1.OrderDetails.SingleItem.\n * Use `create(OrderDetails_SingleItemSchema)` to create a new message.\n */\nexport const OrderDetails_SingleItemSchema: GenMessage<OrderDetails_SingleItem> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 69, 0);\n\n/**\n * @generated from message public_api.v1.Item\n */\nexport type Item = Message<\"public_api.v1.Item\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string image_url = 3;\n */\n imageUrl: string;\n\n /**\n * @generated from oneof public_api.v1.Item.item\n */\n item: {\n /**\n * @generated from field: public_api.v1.FileDownloadable file_downloadable = 4;\n */\n value: FileDownloadable;\n case: \"fileDownloadable\";\n } | {\n /**\n * @generated from field: public_api.v1.Audiobook audiobook = 5;\n */\n value: Audiobook;\n case: \"audiobook\";\n } | {\n /**\n * @generated from field: public_api.v1.Ticket ticket = 6;\n */\n value: Ticket;\n case: \"ticket\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.Item.\n * Use `create(ItemSchema)` to create a new message.\n */\nexport const ItemSchema: GenMessage<Item> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 70);\n\n/**\n * @generated from message public_api.v1.FileDownloadable\n */\nexport type FileDownloadable = Message<\"public_api.v1.FileDownloadable\"> & {\n /**\n * @generated from field: string file_url = 1;\n */\n fileUrl: string;\n};\n\n/**\n * Describes the message public_api.v1.FileDownloadable.\n * Use `create(FileDownloadableSchema)` to create a new message.\n */\nexport const FileDownloadableSchema: GenMessage<FileDownloadable> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 71);\n\n/**\n * @generated from message public_api.v1.Audiobook\n */\nexport type Audiobook = Message<\"public_api.v1.Audiobook\"> & {\n /**\n * @generated from field: string app_download_url = 1;\n */\n appDownloadUrl: string;\n};\n\n/**\n * Describes the message public_api.v1.Audiobook.\n * Use `create(AudiobookSchema)` to create a new message.\n */\nexport const AudiobookSchema: GenMessage<Audiobook> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 72);\n\n/**\n * @generated from message public_api.v1.Ticket\n */\nexport type Ticket = Message<\"public_api.v1.Ticket\"> & {\n /**\n * @generated from field: string ticket_id = 1;\n */\n ticketId: string;\n\n /**\n * @generated from field: optional string apple_pass_url = 2;\n */\n applePassUrl?: string;\n\n /**\n * @generated from field: optional string google_ticket_url = 3;\n */\n googleTicketUrl?: string;\n};\n\n/**\n * Describes the message public_api.v1.Ticket.\n * Use `create(TicketSchema)` to create a new message.\n */\nexport const TicketSchema: GenMessage<Ticket> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 73);\n\n/**\n * @generated from message public_api.v1.UserProduct\n */\nexport type UserProduct = Message<\"public_api.v1.UserProduct\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string project_name = 2;\n */\n projectName: string;\n\n /**\n * @generated from field: string product_id = 3;\n */\n productId: string;\n\n /**\n * @generated from field: string product_name = 4;\n */\n productName: string;\n\n /**\n * @generated from field: string product_description = 5;\n */\n productDescription: string;\n\n /**\n * @generated from field: string product_image_url = 6;\n */\n productImageUrl: string;\n\n /**\n * @generated from field: public_api.v1.UserProductType product_type = 7;\n */\n productType: UserProductType;\n\n /**\n * @generated from field: string access_id = 8;\n */\n accessId: string;\n\n /**\n * @generated from field: optional public_api.v1.ProjectTheme project_theme = 9;\n */\n projectTheme?: ProjectTheme;\n\n /**\n * @generated from field: optional string project_description = 10;\n */\n projectDescription?: string;\n};\n\n/**\n * Describes the message public_api.v1.UserProduct.\n * Use `create(UserProductSchema)` to create a new message.\n */\nexport const UserProductSchema: GenMessage<UserProduct> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 74);\n\n/**\n * @generated from message public_api.v1.BoolResponse\n */\nexport type BoolResponse = Message<\"public_api.v1.BoolResponse\"> & {\n /**\n * @generated from oneof public_api.v1.BoolResponse.result\n */\n result: {\n /**\n * @generated from field: google.protobuf.Empty success = 1;\n */\n value: Empty;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.BoolResponse.\n * Use `create(BoolResponseSchema)` to create a new message.\n */\nexport const BoolResponseSchema: GenMessage<BoolResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 75);\n\n/**\n * @generated from message public_api.v1.PushEventRequest\n */\nexport type PushEventRequest = Message<\"public_api.v1.PushEventRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: string notification_id = 2;\n */\n notificationId: string;\n\n /**\n * @generated from field: common.v1.NotificationEvent event = 3;\n */\n event: NotificationEvent;\n};\n\n/**\n * Describes the message public_api.v1.PushEventRequest.\n * Use `create(PushEventRequestSchema)` to create a new message.\n */\nexport const PushEventRequestSchema: GenMessage<PushEventRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 76);\n\n/**\n * @generated from message public_api.v1.PushSendDeviceTokenRequest\n */\nexport type PushSendDeviceTokenRequest = Message<\"public_api.v1.PushSendDeviceTokenRequest\"> & {\n /**\n * @generated from field: string access_token = 1;\n */\n accessToken: string;\n\n /**\n * @generated from field: common.v1.PushNotificationDeviceToken payload = 2;\n */\n payload?: PushNotificationDeviceToken;\n\n /**\n * @generated from field: optional bool is_notification_granted = 3;\n */\n isNotificationGranted?: boolean;\n};\n\n/**\n * Describes the message public_api.v1.PushSendDeviceTokenRequest.\n * Use `create(PushSendDeviceTokenRequestSchema)` to create a new message.\n */\nexport const PushSendDeviceTokenRequestSchema: GenMessage<PushSendDeviceTokenRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 77);\n\n/**\n * @generated from message public_api.v1.ProjectTheme\n */\nexport type ProjectTheme = Message<\"public_api.v1.ProjectTheme\"> & {\n /**\n * @generated from field: optional string image_url = 1;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: optional string image_dark_url = 2;\n */\n imageDarkUrl?: string;\n\n /**\n * @generated from field: optional string brand_color = 3;\n */\n brandColor?: string;\n\n /**\n * @generated from field: optional string brand_color_dark = 4;\n */\n brandColorDark?: string;\n};\n\n/**\n * Describes the message public_api.v1.ProjectTheme.\n * Use `create(ProjectThemeSchema)` to create a new message.\n */\nexport const ProjectThemeSchema: GenMessage<ProjectTheme> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 78);\n\n/**\n * Public Order Details Messages\n *\n * @generated from message public_api.v1.GetPublicOrderDetailsRequest\n */\nexport type GetPublicOrderDetailsRequest = Message<\"public_api.v1.GetPublicOrderDetailsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string order_id = 2;\n */\n orderId: string;\n\n /**\n * If provided and matches order, show unobfuscated data\n *\n * @generated from field: optional string email = 3;\n */\n email?: string;\n\n /**\n * If provided, extract email from token for automatic verification\n *\n * @generated from field: optional string access_token = 4;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message public_api.v1.GetPublicOrderDetailsRequest.\n * Use `create(GetPublicOrderDetailsRequestSchema)` to create a new message.\n */\nexport const GetPublicOrderDetailsRequestSchema: GenMessage<GetPublicOrderDetailsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 79);\n\n/**\n * @generated from message public_api.v1.GetPublicOrderDetailsResponse\n */\nexport type GetPublicOrderDetailsResponse = Message<\"public_api.v1.GetPublicOrderDetailsResponse\"> & {\n /**\n * @generated from oneof public_api.v1.GetPublicOrderDetailsResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.PublicOrderDetails order = 1;\n */\n value: PublicOrderDetails;\n case: \"order\";\n } | {\n /**\n * @generated from field: string failure = 2;\n */\n value: string;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.GetPublicOrderDetailsResponse.\n * Use `create(GetPublicOrderDetailsResponseSchema)` to create a new message.\n */\nexport const GetPublicOrderDetailsResponseSchema: GenMessage<GetPublicOrderDetailsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 80);\n\n/**\n * @generated from message public_api.v1.PublicOrderDetails\n */\nexport type PublicOrderDetails = Message<\"public_api.v1.PublicOrderDetails\"> & {\n /**\n * @generated from field: string order_id = 1;\n */\n orderId: string;\n\n /**\n * Always visible (e.g., \"completed\", \"pending\", \"shipped\")\n *\n * @generated from field: string status = 2;\n */\n status: string;\n\n /**\n * Always visible\n *\n * @generated from field: optional string processing_status = 3;\n */\n processingStatus?: string;\n\n /**\n * Obfuscated unless email verified\n *\n * @generated from field: string customer_name = 4;\n */\n customerName: string;\n\n /**\n * @generated from field: string customer_email = 5;\n */\n customerEmail: string;\n\n /**\n * @generated from field: optional string customer_phone = 6;\n */\n customerPhone?: string;\n\n /**\n * @generated from field: optional string delivery_address = 7;\n */\n deliveryAddress?: string;\n\n /**\n * @generated from field: optional string delivery_method = 8;\n */\n deliveryMethod?: string;\n\n /**\n * @generated from field: optional string tracking_number = 9;\n */\n trackingNumber?: string;\n\n /**\n * @generated from field: repeated public_api.v1.PublicOrderItem items = 10;\n */\n items: PublicOrderItem[];\n\n /**\n * @generated from field: repeated public_api.v1.PublicOrderComment comments = 11;\n */\n comments: PublicOrderComment[];\n\n /**\n * @generated from field: int64 total_amount = 12;\n */\n totalAmount: bigint;\n\n /**\n * @generated from field: string currency = 13;\n */\n currency: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 14;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp updated_at = 15;\n */\n updatedAt?: Timestamp;\n\n /**\n * True if email matched - frontend uses this to show/hide verify form\n *\n * @generated from field: bool is_verified = 16;\n */\n isVerified: boolean;\n\n /**\n * Total non-internal comments count\n *\n * @generated from field: int32 comment_count = 17;\n */\n commentCount: number;\n\n /**\n * Project branding\n *\n * @generated from field: optional public_api.v1.ProjectTheme project_theme = 18;\n */\n projectTheme?: ProjectTheme;\n\n /**\n * @generated from field: optional string project_name = 19;\n */\n projectName?: string;\n};\n\n/**\n * Describes the message public_api.v1.PublicOrderDetails.\n * Use `create(PublicOrderDetailsSchema)` to create a new message.\n */\nexport const PublicOrderDetailsSchema: GenMessage<PublicOrderDetails> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 81);\n\n/**\n * @generated from message public_api.v1.PublicOrderItem\n */\nexport type PublicOrderItem = Message<\"public_api.v1.PublicOrderItem\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: int32 quantity = 2;\n */\n quantity: number;\n\n /**\n * @generated from field: int64 price = 3;\n */\n price: bigint;\n\n /**\n * @generated from field: string currency = 4;\n */\n currency: string;\n\n /**\n * @generated from field: optional string image_url = 5;\n */\n imageUrl?: string;\n};\n\n/**\n * Describes the message public_api.v1.PublicOrderItem.\n * Use `create(PublicOrderItemSchema)` to create a new message.\n */\nexport const PublicOrderItemSchema: GenMessage<PublicOrderItem> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 82);\n\n/**\n * @generated from message public_api.v1.PublicOrderComment\n */\nexport type PublicOrderComment = Message<\"public_api.v1.PublicOrderComment\"> & {\n /**\n * @generated from field: int32 id = 1;\n */\n id: number;\n\n /**\n * Obfuscated to \"***\" if not verified\n *\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * \"admin\", \"system\", \"customer\"\n *\n * @generated from field: string author_type = 3;\n */\n authorType: string;\n\n /**\n * Obfuscated if not verified\n *\n * @generated from field: optional string author_name = 4;\n */\n authorName?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message public_api.v1.PublicOrderComment.\n * Use `create(PublicOrderCommentSchema)` to create a new message.\n */\nexport const PublicOrderCommentSchema: GenMessage<PublicOrderComment> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 83);\n\n/**\n * @generated from message public_api.v1.AddPublicOrderCommentRequest\n */\nexport type AddPublicOrderCommentRequest = Message<\"public_api.v1.AddPublicOrderCommentRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string order_id = 2;\n */\n orderId: string;\n\n /**\n * @generated from field: string message = 3;\n */\n message: string;\n\n /**\n * Lucia session cookie value\n *\n * @generated from field: string access_token = 4;\n */\n accessToken: string;\n};\n\n/**\n * Describes the message public_api.v1.AddPublicOrderCommentRequest.\n * Use `create(AddPublicOrderCommentRequestSchema)` to create a new message.\n */\nexport const AddPublicOrderCommentRequestSchema: GenMessage<AddPublicOrderCommentRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 84);\n\n/**\n * @generated from message public_api.v1.AddPublicOrderCommentResponse\n */\nexport type AddPublicOrderCommentResponse = Message<\"public_api.v1.AddPublicOrderCommentResponse\"> & {\n /**\n * @generated from oneof public_api.v1.AddPublicOrderCommentResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.PublicOrderComment comment = 1;\n */\n value: PublicOrderComment;\n case: \"comment\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.AddPublicOrderCommentResponse.\n * Use `create(AddPublicOrderCommentResponseSchema)` to create a new message.\n */\nexport const AddPublicOrderCommentResponseSchema: GenMessage<AddPublicOrderCommentResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 85);\n\n/**\n * Testimonial Messages\n *\n * @generated from message public_api.v1.GetOrderForTestimonialRequest\n */\nexport type GetOrderForTestimonialRequest = Message<\"public_api.v1.GetOrderForTestimonialRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string order_id = 2;\n */\n orderId: string;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderForTestimonialRequest.\n * Use `create(GetOrderForTestimonialRequestSchema)` to create a new message.\n */\nexport const GetOrderForTestimonialRequestSchema: GenMessage<GetOrderForTestimonialRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 86);\n\n/**\n * @generated from message public_api.v1.GetOrderForTestimonialResponse\n */\nexport type GetOrderForTestimonialResponse = Message<\"public_api.v1.GetOrderForTestimonialResponse\"> & {\n /**\n * @generated from oneof public_api.v1.GetOrderForTestimonialResponse.result\n */\n result: {\n /**\n * @generated from field: public_api.v1.GetOrderForTestimonialResponse.OrderInfo order = 1;\n */\n value: GetOrderForTestimonialResponse_OrderInfo;\n case: \"order\";\n } | {\n /**\n * @generated from field: string failure = 2;\n */\n value: string;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.GetOrderForTestimonialResponse.\n * Use `create(GetOrderForTestimonialResponseSchema)` to create a new message.\n */\nexport const GetOrderForTestimonialResponseSchema: GenMessage<GetOrderForTestimonialResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 87);\n\n/**\n * @generated from message public_api.v1.GetOrderForTestimonialResponse.OrderProduct\n */\nexport type GetOrderForTestimonialResponse_OrderProduct = Message<\"public_api.v1.GetOrderForTestimonialResponse.OrderProduct\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_name = 2;\n */\n productName: string;\n\n /**\n * @generated from field: optional string product_image_url = 3;\n */\n productImageUrl?: string;\n\n /**\n * @generated from field: int32 quantity = 4;\n */\n quantity: number;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderForTestimonialResponse.OrderProduct.\n * Use `create(GetOrderForTestimonialResponse_OrderProductSchema)` to create a new message.\n */\nexport const GetOrderForTestimonialResponse_OrderProductSchema: GenMessage<GetOrderForTestimonialResponse_OrderProduct> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 87, 0);\n\n/**\n * @generated from message public_api.v1.GetOrderForTestimonialResponse.OrderInfo\n */\nexport type GetOrderForTestimonialResponse_OrderInfo = Message<\"public_api.v1.GetOrderForTestimonialResponse.OrderInfo\"> & {\n /**\n * @generated from field: string order_id = 1;\n */\n orderId: string;\n\n /**\n * @generated from field: string customer_name = 2;\n */\n customerName: string;\n\n /**\n * @generated from field: string customer_email = 3;\n */\n customerEmail: string;\n\n /**\n * @generated from field: repeated public_api.v1.GetOrderForTestimonialResponse.OrderProduct products = 4;\n */\n products: GetOrderForTestimonialResponse_OrderProduct[];\n\n /**\n * @generated from field: bool already_submitted = 5;\n */\n alreadySubmitted: boolean;\n};\n\n/**\n * Describes the message public_api.v1.GetOrderForTestimonialResponse.OrderInfo.\n * Use `create(GetOrderForTestimonialResponse_OrderInfoSchema)` to create a new message.\n */\nexport const GetOrderForTestimonialResponse_OrderInfoSchema: GenMessage<GetOrderForTestimonialResponse_OrderInfo> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 87, 1);\n\n/**\n * @generated from message public_api.v1.SubmitTestimonialRequest\n */\nexport type SubmitTestimonialRequest = Message<\"public_api.v1.SubmitTestimonialRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string order_id = 2;\n */\n orderId: string;\n\n /**\n * @generated from field: string customer_name = 3;\n */\n customerName: string;\n\n /**\n * @generated from field: optional string photo_url = 4;\n */\n photoUrl?: string;\n\n /**\n * @generated from field: int32 rating = 5;\n */\n rating: number;\n\n /**\n * @generated from field: string message = 6;\n */\n message: string;\n\n /**\n * @generated from field: repeated string product_ids = 7;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message public_api.v1.SubmitTestimonialRequest.\n * Use `create(SubmitTestimonialRequestSchema)` to create a new message.\n */\nexport const SubmitTestimonialRequestSchema: GenMessage<SubmitTestimonialRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 88);\n\n/**\n * @generated from message public_api.v1.SubmitTestimonialResponse\n */\nexport type SubmitTestimonialResponse = Message<\"public_api.v1.SubmitTestimonialResponse\"> & {\n /**\n * @generated from oneof public_api.v1.SubmitTestimonialResponse.result\n */\n result: {\n /**\n * @generated from field: google.protobuf.Empty success = 1;\n */\n value: Empty;\n case: \"success\";\n } | {\n /**\n * @generated from field: public_api.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message public_api.v1.SubmitTestimonialResponse.\n * Use `create(SubmitTestimonialResponseSchema)` to create a new message.\n */\nexport const SubmitTestimonialResponseSchema: GenMessage<SubmitTestimonialResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 89);\n\n/**\n * @generated from message public_api.v1.GetTestimonialUploadUrlRequest\n */\nexport type GetTestimonialUploadUrlRequest = Message<\"public_api.v1.GetTestimonialUploadUrlRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string order_id = 2;\n */\n orderId: string;\n\n /**\n * @generated from field: string filename = 3;\n */\n filename: string;\n};\n\n/**\n * Describes the message public_api.v1.GetTestimonialUploadUrlRequest.\n * Use `create(GetTestimonialUploadUrlRequestSchema)` to create a new message.\n */\nexport const GetTestimonialUploadUrlRequestSchema: GenMessage<GetTestimonialUploadUrlRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 90);\n\n/**\n * @generated from message public_api.v1.GetTestimonialUploadUrlResponse\n */\nexport type GetTestimonialUploadUrlResponse = Message<\"public_api.v1.GetTestimonialUploadUrlResponse\"> & {\n /**\n * @generated from field: string upload_url = 1;\n */\n uploadUrl: string;\n\n /**\n * @generated from field: string public_url = 2;\n */\n publicUrl: string;\n};\n\n/**\n * Describes the message public_api.v1.GetTestimonialUploadUrlResponse.\n * Use `create(GetTestimonialUploadUrlResponseSchema)` to create a new message.\n */\nexport const GetTestimonialUploadUrlResponseSchema: GenMessage<GetTestimonialUploadUrlResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_public_api, 91);\n\n/**\n * @generated from enum public_api.v1.LoginCodeDeliveryMethod\n */\nexport enum LoginCodeDeliveryMethod {\n /**\n * @generated from enum value: LOGIN_CODE_DELIVERY_METHOD_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: LOGIN_CODE_DELIVERY_METHOD_EMAIL = 1;\n */\n EMAIL = 1,\n\n /**\n * @generated from enum value: LOGIN_CODE_DELIVERY_METHOD_PUSH = 2;\n */\n PUSH = 2,\n\n /**\n * @generated from enum value: LOGIN_CODE_DELIVERY_METHOD_SMS = 3;\n */\n SMS = 3,\n}\n\n/**\n * Describes the enum public_api.v1.LoginCodeDeliveryMethod.\n */\nexport const LoginCodeDeliveryMethodSchema: GenEnum<LoginCodeDeliveryMethod> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 0);\n\n/**\n * @generated from enum public_api.v1.UserProductType\n */\nexport enum UserProductType {\n /**\n * @generated from enum value: USER_PRODUCT_TYPE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: USER_PRODUCT_TYPE_AUDIO = 1;\n */\n AUDIO = 1,\n\n /**\n * @generated from enum value: USER_PRODUCT_TYPE_FILE = 2;\n */\n FILE = 2,\n\n /**\n * @generated from enum value: USER_PRODUCT_TYPE_TICKET = 3;\n */\n TICKET = 3,\n\n /**\n * @generated from enum value: USER_PRODUCT_TYPE_COURSE = 4;\n */\n COURSE = 4,\n}\n\n/**\n * Describes the enum public_api.v1.UserProductType.\n */\nexport const UserProductTypeSchema: GenEnum<UserProductType> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 1);\n\n/**\n * @generated from enum public_api.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_EMAIL_NOT_FOUND = 1;\n */\n EMAIL_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INCORRECT_EMAIL = 2;\n */\n INCORRECT_EMAIL = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INCORRECT_CODE = 3;\n */\n INCORRECT_CODE = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_GENERATE_ACCESS_TOKEN_FAILED = 4;\n */\n GENERATE_ACCESS_TOKEN_FAILED = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_LOGOUT_FAILED = 5;\n */\n LOGOUT_FAILED = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PRDUCTS_NOT_FOUND = 6;\n */\n PRDUCTS_NOT_FOUND = 6,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_AUDIOBOOK_NOT_FOUND = 7;\n */\n AUDIOBOOK_NOT_FOUND = 7,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INCORRECT_AUDIOBOOK = 8;\n */\n INCORRECT_AUDIOBOOK = 8,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNAUTHORIZED = 9;\n */\n UNAUTHORIZED = 9,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_TICKET_NOT_FOUND = 10;\n */\n TICKET_NOT_FOUND = 10,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELIVERY_METHOD_UNAVAILABLE = 11;\n */\n DELIVERY_METHOD_UNAVAILABLE = 11,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELIVERY_FAILED = 12;\n */\n DELIVERY_FAILED = 12,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_RATE_LIMITED = 13;\n */\n RATE_LIMITED = 13,\n}\n\n/**\n * Describes the enum public_api.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 2);\n\n/**\n * @generated from enum public_api.v1.NotificationMethod\n */\nexport enum NotificationMethod {\n /**\n * @generated from enum value: NOTIFICATION_METHOD_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_METHOD_EMAIL = 1;\n */\n EMAIL = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_METHOD_SMS = 2;\n */\n SMS = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_METHOD_PUSH = 3;\n */\n PUSH = 3,\n}\n\n/**\n * Describes the enum public_api.v1.NotificationMethod.\n */\nexport const NotificationMethodSchema: GenEnum<NotificationMethod> = /*@__PURE__*/\n enumDesc(file_public_v1_public_api, 3);\n\n/**\n * @generated from service public_api.v1.PublicApiService\n */\nexport const PublicApiService: GenService<{\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetOrder\n */\n getOrder: {\n methodKind: \"unary\";\n input: typeof GetOrderRequestSchema;\n output: typeof GetOrderResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetOrders\n */\n getOrders: {\n methodKind: \"unary\";\n input: typeof GetOrdersRequestSchema;\n output: typeof GetOrdersResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetOrderRetryUrl\n */\n getOrderRetryUrl: {\n methodKind: \"unary\";\n input: typeof GetOrderRetryUrlRequestSchema;\n output: typeof GetOrderRetryUrlResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogin\n */\n userPanelLogin: {\n methodKind: \"unary\";\n input: typeof UserPanelLoginRequestSchema;\n output: typeof UserPanelLoginResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLoginWithCode\n */\n userPanelLoginWithCode: {\n methodKind: \"unary\";\n input: typeof UserPanelLoginWithCodeRequestSchema;\n output: typeof UserPanelLoginWithCodeResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogout\n */\n userPanelLogout: {\n methodKind: \"unary\";\n input: typeof UserPanelLogoutRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelDeleteAccount\n */\n userPanelDeleteAccount: {\n methodKind: \"unary\";\n input: typeof UserPanelDeleteAccountRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetProducts\n */\n userPanelGetProducts: {\n methodKind: \"unary\";\n input: typeof UserPanelGetProductsRequestSchema;\n output: typeof UserPanelGetProductsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetails\n */\n userPanelGetAudiobookDetails: {\n methodKind: \"unary\";\n input: typeof UserPanelGetAudiobookDetailsRequestSchema;\n output: typeof UserPanelGetAudiobookDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetailsDownloadURLs\n */\n userPanelGetAudiobookDetailsDownloadURLs: {\n methodKind: \"unary\";\n input: typeof UserPanelGetAudiobookDetailsDownloadURLsRequestSchema;\n output: typeof UserPanelGetAudiobookDetailsDownloadURLsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetFileDetails\n */\n userPanelGetFileDetails: {\n methodKind: \"unary\";\n input: typeof UserPanelGetFileDetailsRequestSchema;\n output: typeof UserPanelGetFileDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetTicketDetails\n */\n userPanelGetTicketDetails: {\n methodKind: \"unary\";\n input: typeof UserPanelGetTicketDetailsRequestSchema;\n output: typeof UserPanelGetTicketDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetCourseDetails\n */\n userPanelGetCourseDetails: {\n methodKind: \"unary\";\n input: typeof UserPanelGetCourseDetailsRequestSchema;\n output: typeof UserPanelGetCourseDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.PushSendDeviceToken\n */\n pushSendDeviceToken: {\n methodKind: \"unary\";\n input: typeof PushSendDeviceTokenRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.PushEvent\n */\n pushEvent: {\n methodKind: \"unary\";\n input: typeof PushEventRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * iOS SHOP methods\n *\n * @generated from rpc public_api.v1.PublicApiService.ShouldShopProducts\n */\n shouldShopProducts: {\n methodKind: \"unary\";\n input: typeof EmptySchema;\n output: typeof ShouldShopProductsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.ShouldShowGuestCatalog\n */\n shouldShowGuestCatalog: {\n methodKind: \"unary\";\n input: typeof EmptySchema;\n output: typeof ShouldShowGuestCatalogResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetGuestCatalog\n */\n getGuestCatalog: {\n methodKind: \"unary\";\n input: typeof EmptySchema;\n output: typeof GetGuestCatalogResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelResolveProductAccess\n */\n userPanelResolveProductAccess: {\n methodKind: \"unary\";\n input: typeof UserPanelResolveProductAccessRequestSchema;\n output: typeof UserPanelResolveProductAccessResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetShopProducts\n */\n getShopProducts: {\n methodKind: \"unary\";\n input: typeof GetShopProductsRequestSchema;\n output: typeof GetShopProductsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.DidBuyProduct\n */\n didBuyProduct: {\n methodKind: \"unary\";\n input: typeof DidBuyProductRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreAccountToken\n */\n getAppStoreAccountToken: {\n methodKind: \"unary\";\n input: typeof GetAppStoreAccountTokenRequestSchema;\n output: typeof GetAppStoreAccountTokenResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.VerifyAppStorePurchase\n */\n verifyAppStorePurchase: {\n methodKind: \"unary\";\n input: typeof VerifyAppStorePurchaseRequestSchema;\n output: typeof VerifyAppStorePurchaseResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreEntitlements\n */\n getAppStoreEntitlements: {\n methodKind: \"unary\";\n input: typeof GetAppStoreEntitlementsRequestSchema;\n output: typeof GetAppStoreEntitlementsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.RestoreAppStorePurchases\n */\n restoreAppStorePurchases: {\n methodKind: \"unary\";\n input: typeof RestoreAppStorePurchasesRequestSchema;\n output: typeof RestoreAppStorePurchasesResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.ClearAppStoreAccountToken\n */\n clearAppStoreAccountToken: {\n methodKind: \"unary\";\n input: typeof ClearAppStoreAccountTokenRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetStoreKitCatalog\n */\n getStoreKitCatalog: {\n methodKind: \"unary\";\n input: typeof GetStoreKitCatalogRequestSchema;\n output: typeof GetStoreKitCatalogResponseSchema;\n },\n /**\n * Notification settings\n *\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettings\n */\n getNotificationSettings: {\n methodKind: \"unary\";\n input: typeof GetNotificationSettingsRequestSchema;\n output: typeof GetNotificationSettingsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettingsDetails\n */\n getNotificationSettingsDetails: {\n methodKind: \"unary\";\n input: typeof GetNotificationSettingsDetailsRequestSchema;\n output: typeof GetNotificationSettingsDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UpdateGlobalNotificationSettings\n */\n updateGlobalNotificationSettings: {\n methodKind: \"unary\";\n input: typeof UpdateGlobalNotificationSettingsRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.UpdateNotificationSettings\n */\n updateNotificationSettings: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationSettingsRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationHistory\n */\n getNotificationHistory: {\n methodKind: \"unary\";\n input: typeof GetNotificationHistoryRequestSchema;\n output: typeof GetNotificationHistoryResponseSchema;\n },\n /**\n * Product V2 requests\n *\n * @generated from rpc public_api.v1.PublicApiService.GetAvailableCountForProduct\n */\n getAvailableCountForProduct: {\n methodKind: \"unary\";\n input: typeof GetAvailableCountForProductRequestSchema;\n output: typeof GetAvailableCountForProductResponseSchema;\n },\n /**\n * Checkout requests\n *\n * @generated from rpc public_api.v1.PublicApiService.IsOneClickPaymentAvailable\n */\n isOneClickPaymentAvailable: {\n methodKind: \"unary\";\n input: typeof IsOneClickPaymentAvailableRequestSchema;\n output: typeof IsOneClickPaymentAvailableResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetPreOrderDetails\n */\n getPreOrderDetails: {\n methodKind: \"unary\";\n input: typeof GetPreOrderDetailsRequestSchema;\n output: typeof GetPreOrderDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.ApplePayValidateMerchant\n */\n applePayValidateMerchant: {\n methodKind: \"unary\";\n input: typeof ApplePayValidateMerchantRequestSchema;\n output: typeof ApplePayValidateMerchantResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.AuthorizeOneClickPayment\n */\n authorizeOneClickPayment: {\n methodKind: \"unary\";\n input: typeof OneClickAuthorizePaymentRequestSchema;\n output: typeof OneClickAuthorizePaymentResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.NotifyUserAboutProductAvailability\n */\n notifyUserAboutProductAvailability: {\n methodKind: \"unary\";\n input: typeof NotifyUserAboutProductAvailabilityRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * Public order details (with obfuscation)\n *\n * @generated from rpc public_api.v1.PublicApiService.GetPublicOrderDetails\n */\n getPublicOrderDetails: {\n methodKind: \"unary\";\n input: typeof GetPublicOrderDetailsRequestSchema;\n output: typeof GetPublicOrderDetailsResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.AddPublicOrderComment\n */\n addPublicOrderComment: {\n methodKind: \"unary\";\n input: typeof AddPublicOrderCommentRequestSchema;\n output: typeof AddPublicOrderCommentResponseSchema;\n },\n /**\n * Testimonials\n *\n * @generated from rpc public_api.v1.PublicApiService.GetOrderForTestimonial\n */\n getOrderForTestimonial: {\n methodKind: \"unary\";\n input: typeof GetOrderForTestimonialRequestSchema;\n output: typeof GetOrderForTestimonialResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.SubmitTestimonial\n */\n submitTestimonial: {\n methodKind: \"unary\";\n input: typeof SubmitTestimonialRequestSchema;\n output: typeof SubmitTestimonialResponseSchema;\n },\n /**\n * @generated from rpc public_api.v1.PublicApiService.GetTestimonialUploadUrl\n */\n getTestimonialUploadUrl: {\n methodKind: \"unary\";\n input: typeof GetTestimonialUploadUrlRequestSchema;\n output: typeof GetTestimonialUploadUrlResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_public_v1_public_api, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file common/v1/gateway.proto (package common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\n\n/**\n * Describes the file common/v1/gateway.proto.\n */\nexport const file_common_v1_gateway: GenFile = /*@__PURE__*/\n fileDesc(\"Chdjb21tb24vdjEvZ2F0ZXdheS5wcm90bxIJY29tbW9uLnYxKs8BCgdHYXRld2F5Eg8KC0dBVEVXQVlfQUxMEAASFwoTR0FURVdBWV9QUlpFTEVXWV8yNBABEhIKDkdBVEVXQVlfU1RSSVBFEAISEAoMR0FURVdBWV9UUEFZEAMSHAoYR0FURVdBWV9DQVNIX09OX0RFTElWRVJZEAQSEAoMR0FURVdBWV9GUkVFEAUSFgoSR0FURVdBWV9JTlBPU1RfUEFZEAYSEAoMR0FURVdBWV9QQVlVEAcSGgoWR0FURVdBWV9NQU5VQUxfUEFZTUVOVBAIQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw\");\n\n/**\n * @generated from enum common.v1.Gateway\n */\nexport enum Gateway {\n /**\n * @generated from enum value: GATEWAY_ALL = 0;\n */\n ALL = 0,\n\n /**\n * @generated from enum value: GATEWAY_PRZELEWY_24 = 1;\n */\n PRZELEWY_24 = 1,\n\n /**\n * @generated from enum value: GATEWAY_STRIPE = 2;\n */\n STRIPE = 2,\n\n /**\n * @generated from enum value: GATEWAY_TPAY = 3;\n */\n TPAY = 3,\n\n /**\n * @generated from enum value: GATEWAY_CASH_ON_DELIVERY = 4;\n */\n CASH_ON_DELIVERY = 4,\n\n /**\n * @generated from enum value: GATEWAY_FREE = 5;\n */\n FREE = 5,\n\n /**\n * @generated from enum value: GATEWAY_INPOST_PAY = 6;\n */\n INPOST_PAY = 6,\n\n /**\n * @generated from enum value: GATEWAY_PAYU = 7;\n */\n PAYU = 7,\n\n /**\n * @generated from enum value: GATEWAY_MANUAL_PAYMENT = 8;\n */\n MANUAL_PAYMENT = 8,\n}\n\n/**\n * Describes the enum common.v1.Gateway.\n */\nexport const GatewaySchema: GenEnum<Gateway> = /*@__PURE__*/\n enumDesc(file_common_v1_gateway, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file common/v1/push_notifications.proto (package common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file common/v1/push_notifications.proto.\n */\nexport const file_common_v1_push_notifications: GenFile = /*@__PURE__*/\n fileDesc(\"CiJjb21tb24vdjEvcHVzaF9ub3RpZmljYXRpb25zLnByb3RvEgljb21tb24udjEi9gEKG1B1c2hOb3RpZmljYXRpb25EZXZpY2VUb2tlbhIXCgpwdXNoX3Rva2VuGAIgASgJSACIAQESNAoLZXhwaXJlX3RpbWUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQESEwoGcDI1NmRoGAQgASgJSAKIAQESFQoIZW5kcG9pbnQYBSABKAlIA4gBARIlCghwbGF0Zm9ybRgGIAEoDjITLmNvbW1vbi52MS5QbGF0Zm9ybUINCgtfcHVzaF90b2tlbkIOCgxfZXhwaXJlX3RpbWVCCQoHX3AyNTZkaEILCglfZW5kcG9pbnQi0AEKF1B1c2hOb3RpZmljYXRpb25QYXlsb2FkEg0KBXRpdGxlGAIgASgJEhUKCG9wZW5fdXJsGAMgASgJSAGIAQESDgoEYm9keRgEIAEoCUgAEjoKBGRhdGEYBSADKAsyLC5jb21tb24udjEuUHVzaE5vdGlmaWNhdGlvblBheWxvYWQuRGF0YUVudHJ5GisKCURhdGFFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBQgkKB21lc3NhZ2VCCwoJX29wZW5fdXJsKngKCFBsYXRmb3JtEhgKFFBMQVRGT1JNX1VOU1BFQ0lGSUVEEAASEAoMUExBVEZPUk1fV0VCEAESGAoUUExBVEZPUk1fSU9TX1NBTkRCT1gQAhIQCgxQTEFURk9STV9JT1MQAxIUChBQTEFURk9STV9BTkRST0lEEAQqdAoRTm90aWZpY2F0aW9uRXZlbnQSEQoNRVZFTlRfVU5LTk9XThAAEhIKDkVWRU5UX1JFQ0VJVkVEEAESEAoMRVZFTlRfT1BFTkVEEAISEQoNRVZFTlRfQ0xJQ0tFRBADEhMKD0VWRU5UX0RJU01JU1NFRBAEKpkBChlOb3RpZmljYXRpb25Hcm91cEhvd09mdGVuEicKI05PVElGSUNBVElPTl9HUk9VUF9IT1dfT0ZURU5fUkFSRUxZEAASJgoiTk9USUZJQ0FUSU9OX0dST1VQX0hPV19PRlRFTl9PRlRFThABEisKJ05PVElGSUNBVElPTl9HUk9VUF9IT1dfT0ZURU5fVkVSWV9PRlRFThACQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw\", [file_google_protobuf_timestamp]);\n\n/**\n * @generated from message common.v1.PushNotificationDeviceToken\n */\nexport type PushNotificationDeviceToken = Message<\"common.v1.PushNotificationDeviceToken\"> & {\n /**\n * @generated from field: optional string push_token = 2;\n */\n pushToken?: string;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp expire_time = 3;\n */\n expireTime?: Timestamp;\n\n /**\n * @generated from field: optional string p256dh = 4;\n */\n p256dh?: string;\n\n /**\n * @generated from field: optional string endpoint = 5;\n */\n endpoint?: string;\n\n /**\n * @generated from field: common.v1.Platform platform = 6;\n */\n platform: Platform;\n};\n\n/**\n * Describes the message common.v1.PushNotificationDeviceToken.\n * Use `create(PushNotificationDeviceTokenSchema)` to create a new message.\n */\nexport const PushNotificationDeviceTokenSchema: GenMessage<PushNotificationDeviceToken> = /*@__PURE__*/\n messageDesc(file_common_v1_push_notifications, 0);\n\n/**\n * @generated from message common.v1.PushNotificationPayload\n */\nexport type PushNotificationPayload = Message<\"common.v1.PushNotificationPayload\"> & {\n /**\n * @generated from field: string title = 2;\n */\n title: string;\n\n /**\n * @generated from field: optional string open_url = 3;\n */\n openUrl?: string;\n\n /**\n * @generated from oneof common.v1.PushNotificationPayload.message\n */\n message: {\n /**\n * @generated from field: string body = 4;\n */\n value: string;\n case: \"body\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: map<string, string> data = 5;\n */\n data: { [key: string]: string };\n};\n\n/**\n * Describes the message common.v1.PushNotificationPayload.\n * Use `create(PushNotificationPayloadSchema)` to create a new message.\n */\nexport const PushNotificationPayloadSchema: GenMessage<PushNotificationPayload> = /*@__PURE__*/\n messageDesc(file_common_v1_push_notifications, 1);\n\n/**\n * @generated from enum common.v1.Platform\n */\nexport enum Platform {\n /**\n * @generated from enum value: PLATFORM_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n\n /**\n * @generated from enum value: PLATFORM_WEB = 1;\n */\n WEB = 1,\n\n /**\n * @generated from enum value: PLATFORM_IOS_SANDBOX = 2;\n */\n IOS_SANDBOX = 2,\n\n /**\n * @generated from enum value: PLATFORM_IOS = 3;\n */\n IOS = 3,\n\n /**\n * @generated from enum value: PLATFORM_ANDROID = 4;\n */\n ANDROID = 4,\n}\n\n/**\n * Describes the enum common.v1.Platform.\n */\nexport const PlatformSchema: GenEnum<Platform> = /*@__PURE__*/\n enumDesc(file_common_v1_push_notifications, 0);\n\n/**\n * @generated from enum common.v1.NotificationEvent\n */\nexport enum NotificationEvent {\n /**\n * @generated from enum value: EVENT_UNKNOWN = 0;\n */\n EVENT_UNKNOWN = 0,\n\n /**\n * @generated from enum value: EVENT_RECEIVED = 1;\n */\n EVENT_RECEIVED = 1,\n\n /**\n * @generated from enum value: EVENT_OPENED = 2;\n */\n EVENT_OPENED = 2,\n\n /**\n * @generated from enum value: EVENT_CLICKED = 3;\n */\n EVENT_CLICKED = 3,\n\n /**\n * @generated from enum value: EVENT_DISMISSED = 4;\n */\n EVENT_DISMISSED = 4,\n}\n\n/**\n * Describes the enum common.v1.NotificationEvent.\n */\nexport const NotificationEventSchema: GenEnum<NotificationEvent> = /*@__PURE__*/\n enumDesc(file_common_v1_push_notifications, 1);\n\n/**\n * @generated from enum common.v1.NotificationGroupHowOften\n */\nexport enum NotificationGroupHowOften {\n /**\n * @generated from enum value: NOTIFICATION_GROUP_HOW_OFTEN_RARELY = 0;\n */\n RARELY = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_GROUP_HOW_OFTEN_OFTEN = 1;\n */\n OFTEN = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_GROUP_HOW_OFTEN_VERY_OFTEN = 2;\n */\n VERY_OFTEN = 2,\n}\n\n/**\n * Describes the enum common.v1.NotificationGroupHowOften.\n */\nexport const NotificationGroupHowOftenSchema: GenEnum<NotificationGroupHowOften> = /*@__PURE__*/\n enumDesc(file_common_v1_push_notifications, 2);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file dashboard/v1/audiobooks.proto (package dashboard.audiobooks.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Empty, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/audiobooks.proto.\n */\nexport const file_dashboard_v1_audiobooks: GenFile = /*@__PURE__*/\n fileDesc(\"Ch1kYXNoYm9hcmQvdjEvYXVkaW9ib29rcy5wcm90bxIXZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEiFgoUR2V0QXVkaW9ib29rc1JlcXVlc3QiIQoTR2V0QXVkaW9ib29rUmVxdWVzdBIKCgJpZBgBIAEoCSKrAQoHQ2hhcHRlchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhgKC2Rlc2NyaXB0aW9uGAMgASgJSACIAQESGgoNbXVsdGltZWRpYV9pZBgEIAEoCUgBiAEBEi4KCmNyZWF0ZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQg4KDF9kZXNjcmlwdGlvbkIQCg5fbXVsdGltZWRpYV9pZCLzAgoJQXVkaW9ib29rEg8KAmlkGAEgASgJSACIAQESEgoKcHJvamVjdF9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEhMKC2Rlc2NyaXB0aW9uGAQgASgJEhMKC2NvdmVyX2ltYWdlGAUgASgJEhcKD3RodW1ibmFpbF9pbWFnZRgGIAEoCRIyCghjaGFwdGVycxgHIAMoCzIgLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkNoYXB0ZXISFwoPaXNfZG93bmxvYWRhYmxlGAggASgIEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiQKF2lzX2Jyb3dzZXJfZG93bmxvYWRhYmxlGAogASgISAGIAQESGQoMYWNjZW50X2NvbG9yGAsgASgJSAKIAQFCBQoDX2lkQhoKGF9pc19icm93c2VyX2Rvd25sb2FkYWJsZUIPCg1fYWNjZW50X2NvbG9yIk8KFUdldEF1ZGlvYm9va3NSZXNwb25zZRI2CgphdWRpb2Jvb2tzGAEgAygLMiIuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQXVkaW9ib29rImAKFEdldEF1ZGlvYm9va1Jlc3BvbnNlEjoKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9va0gAiAEBQgwKCl9hdWRpb2Jvb2siVwoeQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXF1ZXN0EjUKCWF1ZGlvYm9vaxgBIAEoCzIiLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkF1ZGlvYm9vayLRAQofQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZRJSCgdzdWNjZXNzGAEgASgLMj8uZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZS5SZXN1bHRIABI6CgdmYWlsdXJlGAIgASgOMicuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuRmFpbHVyZU1lc3NhZ2VIABoUCgZSZXN1bHQSCgoCaWQYASABKAlCCAoGcmVzdWx0IiQKFkRlbGV0ZUF1ZGlvYm9va1JlcXVlc3QSCgoCaWQYASABKAkiVQofR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVxdWVzdBIUCgxhdWRpb2Jvb2tfaWQYASABKAkSEgoFZW1haWwYAiABKAlIAIgBAUIICgZfZW1haWwi+AIKIEdldEF1ZGlvYm9va0FjY2Vzc0VtYWlsc1Jlc3BvbnNlElMKB3N1Y2Nlc3MYASABKAsyQC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHNSZXNwb25zZS5SZXN1bHRIABI6CgdmYWlsdXJlGAIgASgOMicuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuRmFpbHVyZU1lc3NhZ2VIABpYCgtBY2Nlc3NFbWFpbBIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIuCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBpfCgZSZXN1bHQSVQoGZW1haWxzGAEgAygLMkUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVzcG9uc2UuQWNjZXNzRW1haWxCCAoGcmVzdWx0IkMKHENyZWF0ZUF1ZGlvYm9va0FjY2Vzc1JlcXVlc3QSFAoMYXVkaW9ib29rX2lkGAEgASgJEg0KBWVtYWlsGAIgASgJIjgKHERlbGV0ZUF1ZGlvYm9va0FjY2Vzc1JlcXVlc3QSGAoQc3lzdGVtX2FjY2Vzc19pZBgBIAEoCSJ/CgxCb29sUmVzcG9uc2USKQoHc3VjY2VzcxgBIAEoCzIWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eUgAEjoKB2ZhaWx1cmUYAiABKA4yJy5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5GYWlsdXJlTWVzc2FnZUgAQggKBnJlc3VsdCqpAQoORmFpbHVyZU1lc3NhZ2USGwoXRkFJTFVSRV9NRVNTQUdFX1VOS05PV04QABIlCiFGQUlMVVJFX01FU1NBR0VfUFJPSkVDVF9OT1RfRk9VTkQQARIlCiFGQUlMVVJFX01FU1NBR0VfQ0hBUFRFUl9OT1RfRk9VTkQQAhIsCihGQUlMVVJFX01FU1NBR0VfSU5DT1JSRUNUX0NIQVBURVJfRk9STUFUEAMy6gYKEUF1ZGlvYm9va3NTZXJ2aWNlEm4KDUdldEF1ZGlvYm9va3MSLS5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tzUmVxdWVzdBouLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkdldEF1ZGlvYm9va3NSZXNwb25zZRJrCgxHZXRBdWRpb2Jvb2sSLC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tSZXF1ZXN0Gi0uZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rUmVzcG9uc2USjAEKF0NyZWF0ZU9yVXBkYXRlQXVkaW9ib29rEjcuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXF1ZXN0GjguZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlT3JVcGRhdGVBdWRpb2Jvb2tSZXNwb25zZRJpCg9EZWxldGVBdWRpb2Jvb2sSLy5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5EZWxldGVBdWRpb2Jvb2tSZXF1ZXN0GiUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQm9vbFJlc3BvbnNlEo8BChhHZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHMSOC5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5HZXRBdWRpb2Jvb2tBY2Nlc3NFbWFpbHNSZXF1ZXN0GjkuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuR2V0QXVkaW9ib29rQWNjZXNzRW1haWxzUmVzcG9uc2USdQoVQ3JlYXRlQXVkaW9ib29rQWNjZXNzEjUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQ3JlYXRlQXVkaW9ib29rQWNjZXNzUmVxdWVzdBolLmRhc2hib2FyZC5hdWRpb2Jvb2tzLnYxLkJvb2xSZXNwb25zZRJ1ChVEZWxldGVBdWRpb2Jvb2tBY2Nlc3MSNS5kYXNoYm9hcmQuYXVkaW9ib29rcy52MS5EZWxldGVBdWRpb2Jvb2tBY2Nlc3NSZXF1ZXN0GiUuZGFzaGJvYXJkLmF1ZGlvYm9va3MudjEuQm9vbFJlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_timestamp, file_google_protobuf_empty]);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobooksRequest\n */\nexport type GetAudiobooksRequest = Message<\"dashboard.audiobooks.v1.GetAudiobooksRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobooksRequest.\n * Use `create(GetAudiobooksRequestSchema)` to create a new message.\n */\nexport const GetAudiobooksRequestSchema: GenMessage<GetAudiobooksRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 0);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobookRequest\n */\nexport type GetAudiobookRequest = Message<\"dashboard.audiobooks.v1.GetAudiobookRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobookRequest.\n * Use `create(GetAudiobookRequestSchema)` to create a new message.\n */\nexport const GetAudiobookRequestSchema: GenMessage<GetAudiobookRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 1);\n\n/**\n * @generated from message dashboard.audiobooks.v1.Chapter\n */\nexport type Chapter = Message<\"dashboard.audiobooks.v1.Chapter\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional string multimedia_id = 4;\n */\n multimediaId?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 5;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.Chapter.\n * Use `create(ChapterSchema)` to create a new message.\n */\nexport const ChapterSchema: GenMessage<Chapter> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 2);\n\n/**\n * @generated from message dashboard.audiobooks.v1.Audiobook\n */\nexport type Audiobook = Message<\"dashboard.audiobooks.v1.Audiobook\"> & {\n /**\n * @generated from field: optional string id = 1;\n */\n id?: string;\n\n /**\n * @generated from field: string project_id = 2;\n */\n projectId: string;\n\n /**\n * @generated from field: string name = 3;\n */\n name: string;\n\n /**\n * @generated from field: string description = 4;\n */\n description: string;\n\n /**\n * @generated from field: string cover_image = 5;\n */\n coverImage: string;\n\n /**\n * @generated from field: string thumbnail_image = 6;\n */\n thumbnailImage: string;\n\n /**\n * @generated from field: repeated dashboard.audiobooks.v1.Chapter chapters = 7;\n */\n chapters: Chapter[];\n\n /**\n * @generated from field: bool is_downloadable = 8;\n */\n isDownloadable: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 9;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: optional bool is_browser_downloadable = 10;\n */\n isBrowserDownloadable?: boolean;\n\n /**\n * @generated from field: optional string accent_color = 11;\n */\n accentColor?: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.Audiobook.\n * Use `create(AudiobookSchema)` to create a new message.\n */\nexport const AudiobookSchema: GenMessage<Audiobook> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 3);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobooksResponse\n */\nexport type GetAudiobooksResponse = Message<\"dashboard.audiobooks.v1.GetAudiobooksResponse\"> & {\n /**\n * @generated from field: repeated dashboard.audiobooks.v1.Audiobook audiobooks = 1;\n */\n audiobooks: Audiobook[];\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobooksResponse.\n * Use `create(GetAudiobooksResponseSchema)` to create a new message.\n */\nexport const GetAudiobooksResponseSchema: GenMessage<GetAudiobooksResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 4);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobookResponse\n */\nexport type GetAudiobookResponse = Message<\"dashboard.audiobooks.v1.GetAudiobookResponse\"> & {\n /**\n * @generated from field: optional dashboard.audiobooks.v1.Audiobook audiobook = 1;\n */\n audiobook?: Audiobook;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobookResponse.\n * Use `create(GetAudiobookResponseSchema)` to create a new message.\n */\nexport const GetAudiobookResponseSchema: GenMessage<GetAudiobookResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 5);\n\n/**\n * @generated from message dashboard.audiobooks.v1.CreateOrUpdateAudiobookRequest\n */\nexport type CreateOrUpdateAudiobookRequest = Message<\"dashboard.audiobooks.v1.CreateOrUpdateAudiobookRequest\"> & {\n /**\n * @generated from field: dashboard.audiobooks.v1.Audiobook audiobook = 1;\n */\n audiobook?: Audiobook;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.CreateOrUpdateAudiobookRequest.\n * Use `create(CreateOrUpdateAudiobookRequestSchema)` to create a new message.\n */\nexport const CreateOrUpdateAudiobookRequestSchema: GenMessage<CreateOrUpdateAudiobookRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 6);\n\n/**\n * @generated from message dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse\n */\nexport type CreateOrUpdateAudiobookResponse = Message<\"dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse\"> & {\n /**\n * @generated from oneof dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse.Result success = 1;\n */\n value: CreateOrUpdateAudiobookResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.audiobooks.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse.\n * Use `create(CreateOrUpdateAudiobookResponseSchema)` to create a new message.\n */\nexport const CreateOrUpdateAudiobookResponseSchema: GenMessage<CreateOrUpdateAudiobookResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 7);\n\n/**\n * @generated from message dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse.Result\n */\nexport type CreateOrUpdateAudiobookResponse_Result = Message<\"dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse.Result\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.CreateOrUpdateAudiobookResponse.Result.\n * Use `create(CreateOrUpdateAudiobookResponse_ResultSchema)` to create a new message.\n */\nexport const CreateOrUpdateAudiobookResponse_ResultSchema: GenMessage<CreateOrUpdateAudiobookResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 7, 0);\n\n/**\n * @generated from message dashboard.audiobooks.v1.DeleteAudiobookRequest\n */\nexport type DeleteAudiobookRequest = Message<\"dashboard.audiobooks.v1.DeleteAudiobookRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.DeleteAudiobookRequest.\n * Use `create(DeleteAudiobookRequestSchema)` to create a new message.\n */\nexport const DeleteAudiobookRequestSchema: GenMessage<DeleteAudiobookRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 8);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobookAccessEmailsRequest\n */\nexport type GetAudiobookAccessEmailsRequest = Message<\"dashboard.audiobooks.v1.GetAudiobookAccessEmailsRequest\"> & {\n /**\n * @generated from field: string audiobook_id = 1;\n */\n audiobookId: string;\n\n /**\n * @generated from field: optional string email = 2;\n */\n email?: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobookAccessEmailsRequest.\n * Use `create(GetAudiobookAccessEmailsRequestSchema)` to create a new message.\n */\nexport const GetAudiobookAccessEmailsRequestSchema: GenMessage<GetAudiobookAccessEmailsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 9);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse\n */\nexport type GetAudiobookAccessEmailsResponse = Message<\"dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse\"> & {\n /**\n * @generated from oneof dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.Result success = 1;\n */\n value: GetAudiobookAccessEmailsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.audiobooks.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.\n * Use `create(GetAudiobookAccessEmailsResponseSchema)` to create a new message.\n */\nexport const GetAudiobookAccessEmailsResponseSchema: GenMessage<GetAudiobookAccessEmailsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 10);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.AccessEmail\n */\nexport type GetAudiobookAccessEmailsResponse_AccessEmail = Message<\"dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.AccessEmail\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 3;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.AccessEmail.\n * Use `create(GetAudiobookAccessEmailsResponse_AccessEmailSchema)` to create a new message.\n */\nexport const GetAudiobookAccessEmailsResponse_AccessEmailSchema: GenMessage<GetAudiobookAccessEmailsResponse_AccessEmail> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 10, 0);\n\n/**\n * @generated from message dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.Result\n */\nexport type GetAudiobookAccessEmailsResponse_Result = Message<\"dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.AccessEmail emails = 1;\n */\n emails: GetAudiobookAccessEmailsResponse_AccessEmail[];\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.GetAudiobookAccessEmailsResponse.Result.\n * Use `create(GetAudiobookAccessEmailsResponse_ResultSchema)` to create a new message.\n */\nexport const GetAudiobookAccessEmailsResponse_ResultSchema: GenMessage<GetAudiobookAccessEmailsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 10, 1);\n\n/**\n * @generated from message dashboard.audiobooks.v1.CreateAudiobookAccessRequest\n */\nexport type CreateAudiobookAccessRequest = Message<\"dashboard.audiobooks.v1.CreateAudiobookAccessRequest\"> & {\n /**\n * @generated from field: string audiobook_id = 1;\n */\n audiobookId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.CreateAudiobookAccessRequest.\n * Use `create(CreateAudiobookAccessRequestSchema)` to create a new message.\n */\nexport const CreateAudiobookAccessRequestSchema: GenMessage<CreateAudiobookAccessRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 11);\n\n/**\n * @generated from message dashboard.audiobooks.v1.DeleteAudiobookAccessRequest\n */\nexport type DeleteAudiobookAccessRequest = Message<\"dashboard.audiobooks.v1.DeleteAudiobookAccessRequest\"> & {\n /**\n * @generated from field: string system_access_id = 1;\n */\n systemAccessId: string;\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.DeleteAudiobookAccessRequest.\n * Use `create(DeleteAudiobookAccessRequestSchema)` to create a new message.\n */\nexport const DeleteAudiobookAccessRequestSchema: GenMessage<DeleteAudiobookAccessRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 12);\n\n/**\n * @generated from message dashboard.audiobooks.v1.BoolResponse\n */\nexport type BoolResponse = Message<\"dashboard.audiobooks.v1.BoolResponse\"> & {\n /**\n * @generated from oneof dashboard.audiobooks.v1.BoolResponse.result\n */\n result: {\n /**\n * @generated from field: google.protobuf.Empty success = 1;\n */\n value: Empty;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.audiobooks.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.audiobooks.v1.BoolResponse.\n * Use `create(BoolResponseSchema)` to create a new message.\n */\nexport const BoolResponseSchema: GenMessage<BoolResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_audiobooks, 13);\n\n/**\n * @generated from enum dashboard.audiobooks.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CHAPTER_NOT_FOUND = 2;\n */\n CHAPTER_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INCORRECT_CHAPTER_FORMAT = 3;\n */\n INCORRECT_CHAPTER_FORMAT = 3,\n}\n\n/**\n * Describes the enum dashboard.audiobooks.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_audiobooks, 0);\n\n/**\n * @generated from service dashboard.audiobooks.v1.AudiobooksService\n */\nexport const AudiobooksService: GenService<{\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.GetAudiobooks\n */\n getAudiobooks: {\n methodKind: \"unary\";\n input: typeof GetAudiobooksRequestSchema;\n output: typeof GetAudiobooksResponseSchema;\n },\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.GetAudiobook\n */\n getAudiobook: {\n methodKind: \"unary\";\n input: typeof GetAudiobookRequestSchema;\n output: typeof GetAudiobookResponseSchema;\n },\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.CreateOrUpdateAudiobook\n */\n createOrUpdateAudiobook: {\n methodKind: \"unary\";\n input: typeof CreateOrUpdateAudiobookRequestSchema;\n output: typeof CreateOrUpdateAudiobookResponseSchema;\n },\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.DeleteAudiobook\n */\n deleteAudiobook: {\n methodKind: \"unary\";\n input: typeof DeleteAudiobookRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.GetAudiobookAccessEmails\n */\n getAudiobookAccessEmails: {\n methodKind: \"unary\";\n input: typeof GetAudiobookAccessEmailsRequestSchema;\n output: typeof GetAudiobookAccessEmailsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.CreateAudiobookAccess\n */\n createAudiobookAccess: {\n methodKind: \"unary\";\n input: typeof CreateAudiobookAccessRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.audiobooks.v1.AudiobooksService.DeleteAudiobookAccess\n */\n deleteAudiobookAccess: {\n methodKind: \"unary\";\n input: typeof DeleteAudiobookAccessRequestSchema;\n output: typeof BoolResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_audiobooks, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file common/v1/environment.proto (package common.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc } from \"@bufbuild/protobuf/codegenv2\";\n\n/**\n * Describes the file common/v1/environment.proto.\n */\nexport const file_common_v1_environment: GenFile = /*@__PURE__*/\n fileDesc(\"Chtjb21tb24vdjEvZW52aXJvbm1lbnQucHJvdG8SCWNvbW1vbi52MSonCgtFbnZpcm9ubWVudBIOCgpQUk9EVUNUSU9OEAASCAoEVEVTVBABQk5aTGdpdGh1Yi5jb20vZW1tZW1zL3N1cGVyLWNhcnQvYXBwcy9zcnYtd29ya2VyL3V0aWxzL21vZGVscy9jb21tb24vdjE7Y29tbW9udjFiBnByb3RvMw\");\n\n/**\n * @generated from enum common.v1.Environment\n */\nexport enum Environment {\n /**\n * @generated from enum value: PRODUCTION = 0;\n */\n PRODUCTION = 0,\n\n /**\n * @generated from enum value: TEST = 1;\n */\n TEST = 1,\n}\n\n/**\n * Describes the enum common.v1.Environment.\n */\nexport const EnvironmentSchema: GenEnum<Environment> = /*@__PURE__*/\n enumDesc(file_common_v1_environment, 0);\n\n","// @generated by protoc-gen-es v2.14.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/returns.proto (package public.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Environment } from \"../../common/v1/environment_pb\";\nimport { file_common_v1_environment } from \"../../common/v1/environment_pb\";\nimport type { Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file public/v1/returns.proto.\n */\nexport const file_public_v1_returns: GenFile = /*@__PURE__*/\n fileDesc(\"ChdwdWJsaWMvdjEvcmV0dXJucy5wcm90bxIJcHVibGljLnYxImsKGVN0YXJ0UmV0dXJuU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIrCgtlbnZpcm9ubWVudBgDIAEoDjIWLmNvbW1vbi52MS5FbnZpcm9ubWVudCJhChpTdGFydFJldHVyblNlc3Npb25SZXNwb25zZRIUCgxjaGFsbGVuZ2VfaWQYASABKAkSHAoUcmVzZW5kX2FmdGVyX3NlY29uZHMYAiABKAUSDwoHbWVzc2FnZRgDIAEoCSKBAQoaVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxjaGFsbGVuZ2VfaWQYAiABKAkSDAoEY29kZRgDIAEoCRIrCgtlbnZpcm9ubWVudBgEIAEoDjIWLmNvbW1vbi52MS5FbnZpcm9ubWVudCJkChtWZXJpZnlSZXR1cm5TZXNzaW9uUmVzcG9uc2USFQoNc2Vzc2lvbl90b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJ0ChtFeGNoYW5nZVBhbmVsU2Vzc2lvblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIUCgxhY2Nlc3NfdG9rZW4YAiABKAkSKwoLZW52aXJvbm1lbnQYAyABKA4yFi5jb21tb24udjEuRW52aXJvbm1lbnQiZQocRXhjaGFuZ2VQYW5lbFNlc3Npb25SZXNwb25zZRIVCg1zZXNzaW9uX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjMKClJldHVyblBhZ2USEQoJcGFnZV9zaXplGAEgASgFEhIKCnBhZ2VfdG9rZW4YAiABKAki1AEKElJldHVybk9yZGVyU3VtbWFyeRIaChJjYW5vbmljYWxfb3JkZXJfaWQYASABKAkSGQoRZGlzcGxheV9yZWZlcmVuY2UYAiABKAkSDwoHZ2F0ZXdheRgDIAEoCRIwCgxwdXJjaGFzZWRfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC3RvdGFsX21pbm9yGAUgASgDEhAKCGN1cnJlbmN5GAYgASgJEh0KFXJldHVybmFibGVfbGluZV9jb3VudBgHIAEoBSJrChdMaXN0UmV0dXJuT3JkZXJzUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSEQoJcGFnZV9zaXplGAMgASgFEhIKCnBhZ2VfdG9rZW4YBCABKAkicQoYTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEi0KBm9yZGVycxgBIAMoCzIdLnB1YmxpYy52MS5SZXR1cm5PcmRlclN1bW1hcnkSFwoPbmV4dF9wYWdlX3Rva2VuGAIgASgJEg0KBXRvdGFsGAMgASgFIsQDCg9SZXR1cm5PcmRlckxpbmUSDwoHbGluZV9pZBgBIAEoCRISCgpwcm9kdWN0X2lkGAIgASgJEhIKCnZhcmlhbnRfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAUgASgJEhoKEnB1cmNoYXNlZF9xdWFudGl0eRgGIAEoBRIZChFyZXNlcnZlZF9xdWFudGl0eRgHIAEoBRIZChFyZXR1cm5lZF9xdWFudGl0eRgIIAEoBRIaChJhdmFpbGFibGVfcXVhbnRpdHkYCSABKAUSGgoScmVndWxhcl91bml0X21pbm9yGAogASgDEhcKD3BhaWRfdW5pdF9taW5vchgLIAEoAxIQCghjdXJyZW5jeRgMIAEoCRIQCghlbGlnaWJsZRgNIAEoCBIYChBleGNsdXNpb25fcmVhc29uGA4gASgJEh0KFXBhaWRfbGluZV90b3RhbF9taW5vchgPIAEoAxIfChdjb3Vwb25fYWxsb2NhdGlvbl9taW5vchgQIAEoAxIVCg1hY2Nlc3Nfc291cmNlGBEgASgJEhgKEGFjY2Vzc19yZWZlcmVuY2UYEiABKAki3wEKEVJldHVybk9yZGVyRGV0YWlsEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgBIAEoCRIZChFkaXNwbGF5X3JlZmVyZW5jZRgCIAEoCRIPCgdnYXRld2F5GAMgASgJEjAKDHB1cmNoYXNlZF9hdBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLdG90YWxfbWlub3IYBSABKAMSEAoIY3VycmVuY3kYBiABKAkSKQoFbGluZXMYByADKAsyGi5wdWJsaWMudjEuUmV0dXJuT3JkZXJMaW5lIjsKFlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDwoHbGluZV9pZBgBIAEoCRIQCghxdWFudGl0eRgCIAEoBSJzChJSZXR1cm5IaXN0b3J5RW50cnkSCgoCaWQYASABKAkSEQoJcmVmZXJlbmNlGAIgASgJEg4KBnN0YXR1cxgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK5AQoVUmV0dXJuUmVxdWVzdExpbmVWaWV3Eg8KB2xpbmVfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYChBmdWxmaWxsbWVudF90eXBlGAMgASgJEhoKEnJlcXVlc3RlZF9xdWFudGl0eRgEIAEoBRIZChFhcHByb3ZlZF9xdWFudGl0eRgFIAEoBRIZChFyZWNlaXZlZF9xdWFudGl0eRgGIAEoBRIVCg1hY2Nlc3Nfc3RhdHVzGAcgASgJIvoCChFSZXR1cm5SZXF1ZXN0VmlldxIKCgJpZBgBIAEoCRIRCglyZWZlcmVuY2UYAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEg4KBnN0YXR1cxgEIAEoCRIVCg1yZWZ1bmRfc3RhdHVzGAUgASgJEhsKE3JlZnVuZF9hbW91bnRfbWlub3IYBiABKAMSEAoIY3VycmVuY3kYByABKAkSFQoNY3VzdG9tZXJfbm90ZRgIIAEoCRIPCgd2ZXJzaW9uGAkgASgDEi4KCmNyZWF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi8KBWxpbmVzGAsgAygLMiAucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lVmlldxIuCgdoaXN0b3J5GAwgAygLMh0ucHVibGljLnYxLlJldHVybkhpc3RvcnlFbnRyeRIbChNyZXR1cm5faW5zdHJ1Y3Rpb25zGA0gASgJImIKGUdldFJldHVybmFibGVPcmRlclJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhoKEmNhbm9uaWNhbF9vcmRlcl9pZBgDIAEoCSKAAQoaR2V0UmV0dXJuYWJsZU9yZGVyUmVzcG9uc2USKwoFb3JkZXIYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuT3JkZXJEZXRhaWwSNQoOcmV0dXJuX2hpc3RvcnkYAiADKAsyHS5wdWJsaWMudjEuUmV0dXJuSGlzdG9yeUVudHJ5IrwBChpDcmVhdGVSZXR1cm5SZXF1ZXN0UmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhUKDXNlc3Npb25fdG9rZW4YAiABKAkSGgoSY2Fub25pY2FsX29yZGVyX2lkGAMgASgJEjAKBWl0ZW1zGAQgAygLMiEucHVibGljLnYxLlJldHVyblJlcXVlc3RMaW5lSW5wdXQSDAoEbm90ZRgFIAEoCRIXCg9pZGVtcG90ZW5jeV9rZXkYBiABKAkiTAobQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXciaAoUTGlzdE15UmV0dXJuc1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXBhZ2Vfc2l6ZRgDIAEoBRISCgpwYWdlX3Rva2VuGAQgASgJIm4KFUxpc3RNeVJldHVybnNSZXNwb25zZRItCgdyZXR1cm5zGAEgAygLMhwucHVibGljLnYxLlJldHVyblJlcXVlc3RWaWV3EhcKD25leHRfcGFnZV90b2tlbhgCIAEoCRINCgV0b3RhbBgDIAEoBSJSChJHZXRNeVJldHVyblJlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRIVCg1zZXNzaW9uX3Rva2VuGAIgASgJEhEKCXJldHVybl9pZBgDIAEoCSJEChNHZXRNeVJldHVyblJlc3BvbnNlEi0KB3JlcXVlc3QYASABKAsyHC5wdWJsaWMudjEuUmV0dXJuUmVxdWVzdFZpZXcyigYKDlJldHVybnNTZXJ2aWNlEmEKElN0YXJ0UmV0dXJuU2Vzc2lvbhIkLnB1YmxpYy52MS5TdGFydFJldHVyblNlc3Npb25SZXF1ZXN0GiUucHVibGljLnYxLlN0YXJ0UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmQKE1ZlcmlmeVJldHVyblNlc3Npb24SJS5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlcXVlc3QaJi5wdWJsaWMudjEuVmVyaWZ5UmV0dXJuU2Vzc2lvblJlc3BvbnNlEmcKFEV4Y2hhbmdlUGFuZWxTZXNzaW9uEiYucHVibGljLnYxLkV4Y2hhbmdlUGFuZWxTZXNzaW9uUmVxdWVzdBonLnB1YmxpYy52MS5FeGNoYW5nZVBhbmVsU2Vzc2lvblJlc3BvbnNlElsKEExpc3RSZXR1cm5PcmRlcnMSIi5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1JlcXVlc3QaIy5wdWJsaWMudjEuTGlzdFJldHVybk9yZGVyc1Jlc3BvbnNlEmEKEkdldFJldHVybmFibGVPcmRlchIkLnB1YmxpYy52MS5HZXRSZXR1cm5hYmxlT3JkZXJSZXF1ZXN0GiUucHVibGljLnYxLkdldFJldHVybmFibGVPcmRlclJlc3BvbnNlEmQKE0NyZWF0ZVJldHVyblJlcXVlc3QSJS5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlcXVlc3QaJi5wdWJsaWMudjEuQ3JlYXRlUmV0dXJuUmVxdWVzdFJlc3BvbnNlElIKDUxpc3RNeVJldHVybnMSHy5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1JlcXVlc3QaIC5wdWJsaWMudjEuTGlzdE15UmV0dXJuc1Jlc3BvbnNlEkwKC0dldE15UmV0dXJuEh0ucHVibGljLnYxLkdldE15UmV0dXJuUmVxdWVzdBoeLnB1YmxpYy52MS5HZXRNeVJldHVyblJlc3BvbnNlYgZwcm90bzM\", [file_common_v1_environment, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message public.v1.StartReturnSessionRequest\n */\nexport type StartReturnSessionRequest = Message<\"public.v1.StartReturnSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 3;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.StartReturnSessionRequest.\n * Use `create(StartReturnSessionRequestSchema)` to create a new message.\n */\nexport const StartReturnSessionRequestSchema: GenMessage<StartReturnSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 0);\n\n/**\n * @generated from message public.v1.StartReturnSessionResponse\n */\nexport type StartReturnSessionResponse = Message<\"public.v1.StartReturnSessionResponse\"> & {\n /**\n * @generated from field: string challenge_id = 1;\n */\n challengeId: string;\n\n /**\n * @generated from field: int32 resend_after_seconds = 2;\n */\n resendAfterSeconds: number;\n\n /**\n * @generated from field: string message = 3;\n */\n message: string;\n};\n\n/**\n * Describes the message public.v1.StartReturnSessionResponse.\n * Use `create(StartReturnSessionResponseSchema)` to create a new message.\n */\nexport const StartReturnSessionResponseSchema: GenMessage<StartReturnSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 1);\n\n/**\n * @generated from message public.v1.VerifyReturnSessionRequest\n */\nexport type VerifyReturnSessionRequest = Message<\"public.v1.VerifyReturnSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string challenge_id = 2;\n */\n challengeId: string;\n\n /**\n * @generated from field: string code = 3;\n */\n code: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 4;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.VerifyReturnSessionRequest.\n * Use `create(VerifyReturnSessionRequestSchema)` to create a new message.\n */\nexport const VerifyReturnSessionRequestSchema: GenMessage<VerifyReturnSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 2);\n\n/**\n * @generated from message public.v1.VerifyReturnSessionResponse\n */\nexport type VerifyReturnSessionResponse = Message<\"public.v1.VerifyReturnSessionResponse\"> & {\n /**\n * @generated from field: string session_token = 1;\n */\n sessionToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.VerifyReturnSessionResponse.\n * Use `create(VerifyReturnSessionResponseSchema)` to create a new message.\n */\nexport const VerifyReturnSessionResponseSchema: GenMessage<VerifyReturnSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 3);\n\n/**\n * Exchanges a customer panel access token for a returns session. The email comes\n * from the server-side panel session, never from the request.\n *\n * @generated from message public.v1.ExchangePanelSessionRequest\n */\nexport type ExchangePanelSessionRequest = Message<\"public.v1.ExchangePanelSessionRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string access_token = 2;\n */\n accessToken: string;\n\n /**\n * @generated from field: common.v1.Environment environment = 3;\n */\n environment: Environment;\n};\n\n/**\n * Describes the message public.v1.ExchangePanelSessionRequest.\n * Use `create(ExchangePanelSessionRequestSchema)` to create a new message.\n */\nexport const ExchangePanelSessionRequestSchema: GenMessage<ExchangePanelSessionRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 4);\n\n/**\n * @generated from message public.v1.ExchangePanelSessionResponse\n */\nexport type ExchangePanelSessionResponse = Message<\"public.v1.ExchangePanelSessionResponse\"> & {\n /**\n * @generated from field: string session_token = 1;\n */\n sessionToken: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp expires_at = 2;\n */\n expiresAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.ExchangePanelSessionResponse.\n * Use `create(ExchangePanelSessionResponseSchema)` to create a new message.\n */\nexport const ExchangePanelSessionResponseSchema: GenMessage<ExchangePanelSessionResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 5);\n\n/**\n * @generated from message public.v1.ReturnPage\n */\nexport type ReturnPage = Message<\"public.v1.ReturnPage\"> & {\n /**\n * @generated from field: int32 page_size = 1;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 2;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ReturnPage.\n * Use `create(ReturnPageSchema)` to create a new message.\n */\nexport const ReturnPageSchema: GenMessage<ReturnPage> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 6);\n\n/**\n * @generated from message public.v1.ReturnOrderSummary\n */\nexport type ReturnOrderSummary = Message<\"public.v1.ReturnOrderSummary\"> & {\n /**\n * @generated from field: string canonical_order_id = 1;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string display_reference = 2;\n */\n displayReference: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp purchased_at = 4;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: int64 total_minor = 5;\n */\n totalMinor: bigint;\n\n /**\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: int32 returnable_line_count = 7;\n */\n returnableLineCount: number;\n};\n\n/**\n * Describes the message public.v1.ReturnOrderSummary.\n * Use `create(ReturnOrderSummarySchema)` to create a new message.\n */\nexport const ReturnOrderSummarySchema: GenMessage<ReturnOrderSummary> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 7);\n\n/**\n * @generated from message public.v1.ListReturnOrdersRequest\n */\nexport type ListReturnOrdersRequest = Message<\"public.v1.ListReturnOrdersRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: int32 page_size = 3;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ListReturnOrdersRequest.\n * Use `create(ListReturnOrdersRequestSchema)` to create a new message.\n */\nexport const ListReturnOrdersRequestSchema: GenMessage<ListReturnOrdersRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 8);\n\n/**\n * @generated from message public.v1.ListReturnOrdersResponse\n */\nexport type ListReturnOrdersResponse = Message<\"public.v1.ListReturnOrdersResponse\"> & {\n /**\n * @generated from field: repeated public.v1.ReturnOrderSummary orders = 1;\n */\n orders: ReturnOrderSummary[];\n\n /**\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message public.v1.ListReturnOrdersResponse.\n * Use `create(ListReturnOrdersResponseSchema)` to create a new message.\n */\nexport const ListReturnOrdersResponseSchema: GenMessage<ListReturnOrdersResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 9);\n\n/**\n * @generated from message public.v1.ReturnOrderLine\n */\nexport type ReturnOrderLine = Message<\"public.v1.ReturnOrderLine\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: string variant_id = 3;\n */\n variantId: string;\n\n /**\n * @generated from field: string name = 4;\n */\n name: string;\n\n /**\n * @generated from field: string fulfillment_type = 5;\n */\n fulfillmentType: string;\n\n /**\n * @generated from field: int32 purchased_quantity = 6;\n */\n purchasedQuantity: number;\n\n /**\n * @generated from field: int32 reserved_quantity = 7;\n */\n reservedQuantity: number;\n\n /**\n * @generated from field: int32 returned_quantity = 8;\n */\n returnedQuantity: number;\n\n /**\n * @generated from field: int32 available_quantity = 9;\n */\n availableQuantity: number;\n\n /**\n * @generated from field: int64 regular_unit_minor = 10;\n */\n regularUnitMinor: bigint;\n\n /**\n * @generated from field: int64 paid_unit_minor = 11;\n */\n paidUnitMinor: bigint;\n\n /**\n * @generated from field: string currency = 12;\n */\n currency: string;\n\n /**\n * @generated from field: bool eligible = 13;\n */\n eligible: boolean;\n\n /**\n * @generated from field: string exclusion_reason = 14;\n */\n exclusionReason: string;\n\n /**\n * @generated from field: int64 paid_line_total_minor = 15;\n */\n paidLineTotalMinor: bigint;\n\n /**\n * @generated from field: int64 coupon_allocation_minor = 16;\n */\n couponAllocationMinor: bigint;\n\n /**\n * @generated from field: string access_source = 17;\n */\n accessSource: string;\n\n /**\n * @generated from field: string access_reference = 18;\n */\n accessReference: string;\n};\n\n/**\n * Describes the message public.v1.ReturnOrderLine.\n * Use `create(ReturnOrderLineSchema)` to create a new message.\n */\nexport const ReturnOrderLineSchema: GenMessage<ReturnOrderLine> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 10);\n\n/**\n * @generated from message public.v1.ReturnOrderDetail\n */\nexport type ReturnOrderDetail = Message<\"public.v1.ReturnOrderDetail\"> & {\n /**\n * @generated from field: string canonical_order_id = 1;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string display_reference = 2;\n */\n displayReference: string;\n\n /**\n * @generated from field: string gateway = 3;\n */\n gateway: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp purchased_at = 4;\n */\n purchasedAt?: Timestamp | undefined;\n\n /**\n * @generated from field: int64 total_minor = 5;\n */\n totalMinor: bigint;\n\n /**\n * @generated from field: string currency = 6;\n */\n currency: string;\n\n /**\n * @generated from field: repeated public.v1.ReturnOrderLine lines = 7;\n */\n lines: ReturnOrderLine[];\n};\n\n/**\n * Describes the message public.v1.ReturnOrderDetail.\n * Use `create(ReturnOrderDetailSchema)` to create a new message.\n */\nexport const ReturnOrderDetailSchema: GenMessage<ReturnOrderDetail> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 11);\n\n/**\n * @generated from message public.v1.ReturnRequestLineInput\n */\nexport type ReturnRequestLineInput = Message<\"public.v1.ReturnRequestLineInput\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: int32 quantity = 2;\n */\n quantity: number;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestLineInput.\n * Use `create(ReturnRequestLineInputSchema)` to create a new message.\n */\nexport const ReturnRequestLineInputSchema: GenMessage<ReturnRequestLineInput> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 12);\n\n/**\n * @generated from message public.v1.ReturnHistoryEntry\n */\nexport type ReturnHistoryEntry = Message<\"public.v1.ReturnHistoryEntry\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string reference = 2;\n */\n reference: string;\n\n /**\n * @generated from field: string status = 3;\n */\n status: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 4;\n */\n createdAt?: Timestamp | undefined;\n};\n\n/**\n * Describes the message public.v1.ReturnHistoryEntry.\n * Use `create(ReturnHistoryEntrySchema)` to create a new message.\n */\nexport const ReturnHistoryEntrySchema: GenMessage<ReturnHistoryEntry> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 13);\n\n/**\n * @generated from message public.v1.ReturnRequestLineView\n */\nexport type ReturnRequestLineView = Message<\"public.v1.ReturnRequestLineView\"> & {\n /**\n * @generated from field: string line_id = 1;\n */\n lineId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: string fulfillment_type = 3;\n */\n fulfillmentType: string;\n\n /**\n * @generated from field: int32 requested_quantity = 4;\n */\n requestedQuantity: number;\n\n /**\n * @generated from field: int32 approved_quantity = 5;\n */\n approvedQuantity: number;\n\n /**\n * @generated from field: int32 received_quantity = 6;\n */\n receivedQuantity: number;\n\n /**\n * @generated from field: string access_status = 7;\n */\n accessStatus: string;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestLineView.\n * Use `create(ReturnRequestLineViewSchema)` to create a new message.\n */\nexport const ReturnRequestLineViewSchema: GenMessage<ReturnRequestLineView> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 14);\n\n/**\n * @generated from message public.v1.ReturnRequestView\n */\nexport type ReturnRequestView = Message<\"public.v1.ReturnRequestView\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string reference = 2;\n */\n reference: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: string status = 4;\n */\n status: string;\n\n /**\n * @generated from field: string refund_status = 5;\n */\n refundStatus: string;\n\n /**\n * @generated from field: int64 refund_amount_minor = 6;\n */\n refundAmountMinor: bigint;\n\n /**\n * @generated from field: string currency = 7;\n */\n currency: string;\n\n /**\n * @generated from field: string customer_note = 8;\n */\n customerNote: string;\n\n /**\n * @generated from field: int64 version = 9;\n */\n version: bigint;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 10;\n */\n createdAt?: Timestamp | undefined;\n\n /**\n * @generated from field: repeated public.v1.ReturnRequestLineView lines = 11;\n */\n lines: ReturnRequestLineView[];\n\n /**\n * @generated from field: repeated public.v1.ReturnHistoryEntry history = 12;\n */\n history: ReturnHistoryEntry[];\n\n /**\n * @generated from field: string return_instructions = 13;\n */\n returnInstructions: string;\n};\n\n/**\n * Describes the message public.v1.ReturnRequestView.\n * Use `create(ReturnRequestViewSchema)` to create a new message.\n */\nexport const ReturnRequestViewSchema: GenMessage<ReturnRequestView> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 15);\n\n/**\n * @generated from message public.v1.GetReturnableOrderRequest\n */\nexport type GetReturnableOrderRequest = Message<\"public.v1.GetReturnableOrderRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n};\n\n/**\n * Describes the message public.v1.GetReturnableOrderRequest.\n * Use `create(GetReturnableOrderRequestSchema)` to create a new message.\n */\nexport const GetReturnableOrderRequestSchema: GenMessage<GetReturnableOrderRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 16);\n\n/**\n * @generated from message public.v1.GetReturnableOrderResponse\n */\nexport type GetReturnableOrderResponse = Message<\"public.v1.GetReturnableOrderResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnOrderDetail order = 1;\n */\n order?: ReturnOrderDetail | undefined;\n\n /**\n * @generated from field: repeated public.v1.ReturnHistoryEntry return_history = 2;\n */\n returnHistory: ReturnHistoryEntry[];\n};\n\n/**\n * Describes the message public.v1.GetReturnableOrderResponse.\n * Use `create(GetReturnableOrderResponseSchema)` to create a new message.\n */\nexport const GetReturnableOrderResponseSchema: GenMessage<GetReturnableOrderResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 17);\n\n/**\n * @generated from message public.v1.CreateReturnRequestRequest\n */\nexport type CreateReturnRequestRequest = Message<\"public.v1.CreateReturnRequestRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string canonical_order_id = 3;\n */\n canonicalOrderId: string;\n\n /**\n * @generated from field: repeated public.v1.ReturnRequestLineInput items = 4;\n */\n items: ReturnRequestLineInput[];\n\n /**\n * @generated from field: string note = 5;\n */\n note: string;\n\n /**\n * @generated from field: string idempotency_key = 6;\n */\n idempotencyKey: string;\n};\n\n/**\n * Describes the message public.v1.CreateReturnRequestRequest.\n * Use `create(CreateReturnRequestRequestSchema)` to create a new message.\n */\nexport const CreateReturnRequestRequestSchema: GenMessage<CreateReturnRequestRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 18);\n\n/**\n * @generated from message public.v1.CreateReturnRequestResponse\n */\nexport type CreateReturnRequestResponse = Message<\"public.v1.CreateReturnRequestResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnRequestView request = 1;\n */\n request?: ReturnRequestView | undefined;\n};\n\n/**\n * Describes the message public.v1.CreateReturnRequestResponse.\n * Use `create(CreateReturnRequestResponseSchema)` to create a new message.\n */\nexport const CreateReturnRequestResponseSchema: GenMessage<CreateReturnRequestResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 19);\n\n/**\n * @generated from message public.v1.ListMyReturnsRequest\n */\nexport type ListMyReturnsRequest = Message<\"public.v1.ListMyReturnsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: int32 page_size = 3;\n */\n pageSize: number;\n\n /**\n * @generated from field: string page_token = 4;\n */\n pageToken: string;\n};\n\n/**\n * Describes the message public.v1.ListMyReturnsRequest.\n * Use `create(ListMyReturnsRequestSchema)` to create a new message.\n */\nexport const ListMyReturnsRequestSchema: GenMessage<ListMyReturnsRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 20);\n\n/**\n * @generated from message public.v1.ListMyReturnsResponse\n */\nexport type ListMyReturnsResponse = Message<\"public.v1.ListMyReturnsResponse\"> & {\n /**\n * @generated from field: repeated public.v1.ReturnRequestView returns = 1;\n */\n returns: ReturnRequestView[];\n\n /**\n * @generated from field: string next_page_token = 2;\n */\n nextPageToken: string;\n\n /**\n * @generated from field: int32 total = 3;\n */\n total: number;\n};\n\n/**\n * Describes the message public.v1.ListMyReturnsResponse.\n * Use `create(ListMyReturnsResponseSchema)` to create a new message.\n */\nexport const ListMyReturnsResponseSchema: GenMessage<ListMyReturnsResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 21);\n\n/**\n * @generated from message public.v1.GetMyReturnRequest\n */\nexport type GetMyReturnRequest = Message<\"public.v1.GetMyReturnRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string session_token = 2;\n */\n sessionToken: string;\n\n /**\n * @generated from field: string return_id = 3;\n */\n returnId: string;\n};\n\n/**\n * Describes the message public.v1.GetMyReturnRequest.\n * Use `create(GetMyReturnRequestSchema)` to create a new message.\n */\nexport const GetMyReturnRequestSchema: GenMessage<GetMyReturnRequest> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 22);\n\n/**\n * @generated from message public.v1.GetMyReturnResponse\n */\nexport type GetMyReturnResponse = Message<\"public.v1.GetMyReturnResponse\"> & {\n /**\n * @generated from field: public.v1.ReturnRequestView request = 1;\n */\n request?: ReturnRequestView | undefined;\n};\n\n/**\n * Describes the message public.v1.GetMyReturnResponse.\n * Use `create(GetMyReturnResponseSchema)` to create a new message.\n */\nexport const GetMyReturnResponseSchema: GenMessage<GetMyReturnResponse> = /*@__PURE__*/\n messageDesc(file_public_v1_returns, 23);\n\n/**\n * @generated from service public.v1.ReturnsService\n */\nexport const ReturnsService: GenService<{\n /**\n * @generated from rpc public.v1.ReturnsService.StartReturnSession\n */\n startReturnSession: {\n methodKind: \"unary\";\n input: typeof StartReturnSessionRequestSchema;\n output: typeof StartReturnSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.VerifyReturnSession\n */\n verifyReturnSession: {\n methodKind: \"unary\";\n input: typeof VerifyReturnSessionRequestSchema;\n output: typeof VerifyReturnSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ExchangePanelSession\n */\n exchangePanelSession: {\n methodKind: \"unary\";\n input: typeof ExchangePanelSessionRequestSchema;\n output: typeof ExchangePanelSessionResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ListReturnOrders\n */\n listReturnOrders: {\n methodKind: \"unary\";\n input: typeof ListReturnOrdersRequestSchema;\n output: typeof ListReturnOrdersResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.GetReturnableOrder\n */\n getReturnableOrder: {\n methodKind: \"unary\";\n input: typeof GetReturnableOrderRequestSchema;\n output: typeof GetReturnableOrderResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.CreateReturnRequest\n */\n createReturnRequest: {\n methodKind: \"unary\";\n input: typeof CreateReturnRequestRequestSchema;\n output: typeof CreateReturnRequestResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.ListMyReturns\n */\n listMyReturns: {\n methodKind: \"unary\";\n input: typeof ListMyReturnsRequestSchema;\n output: typeof ListMyReturnsResponseSchema;\n },\n /**\n * @generated from rpc public.v1.ReturnsService.GetMyReturn\n */\n getMyReturn: {\n methodKind: \"unary\";\n input: typeof GetMyReturnRequestSchema;\n output: typeof GetMyReturnResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_public_v1_returns, 0);\n\n","import {\n TransportProvider,\n useMutation as um,\n useQuery as uq,\n} from \"@connectrpc/connect-query\";\nimport { createConnectTransport } from \"@connectrpc/connect-web\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport React, { useState } from \"react\";\n\nimport { Transport } from \"@connectrpc/connect\";\nimport { clientHeaderInterceptor } from \"./lib/client-header\";\nimport { HOST, setCustomHost } from \"./components/checkout/constants\";\nimport * as notificationsRouter from \"./gen/proto/dashboard/v1/notifications-NotificationsService_connectquery\";\nimport * as publicApiRouter from \"./gen/proto/public/v1/public_api-PublicApiService_connectquery\";\nimport * as returnsRouter from \"./gen/proto/public/v1/returns-ReturnsService_connectquery\";\n\nlet currentFinalTransportHost: string | undefined;\nlet finalTransport: Transport | undefined;\n\n// @ts-ignore\nBigInt.prototype.toJSON = function () {\n return this.toString();\n};\n\nexport const rpcProvider = {\n publicApi: publicApiRouter,\n notifications: notificationsRouter,\n returns: returnsRouter,\n};\n\nexport const useQuery = uq;\nexport const useMutation = um;\n\nlet customHost: string | undefined;\n\nexport function setHost(host: string): void {\n customHost = host;\n setCustomHost(host);\n}\n\nexport function getTransportHost(): string {\n return customHost ?? HOST;\n}\n\nfunction createRpcTransport(host: string): Transport {\n return createConnectTransport({\n baseUrl: host + \"/api/rpc\",\n useBinaryFormat: true,\n interceptors: [clientHeaderInterceptor],\n // @ts-ignore\n fetch: async (input, init?) => {\n return fetch(input, {\n ...init,\n keepalive: false,\n credentials: \"include\",\n });\n },\n });\n}\n\nconst transportsByHost = new Map<string, Transport>();\n\n/**\n * Transport for an explicit host, created once per host. Unlike the shared\n * transport behind `RpcProvider`, several hosts can be in use at the same time.\n */\nexport function getRpcTransport(host: string): Transport {\n let transport = transportsByHost.get(host);\n if (transport == null) {\n transport = createRpcTransport(host);\n transportsByHost.set(host, transport);\n }\n return transport;\n}\n\nexport const RpcProvider: React.FC<{\n children: React.ReactNode;\n}> = ({ children }) => {\n const transportHost = getTransportHost();\n\n if (finalTransport == null || currentFinalTransportHost !== transportHost) {\n currentFinalTransportHost = transportHost;\n finalTransport = createRpcTransport(transportHost);\n }\n\n const [queryClient] = useState(\n () =>\n new QueryClient({\n defaultOptions: { queries: { staleTime: 5000 } },\n }),\n );\n\n return (\n <TransportProvider transport={finalTransport}>\n <QueryClientProvider client={queryClient}>{children}</QueryClientProvider>\n </TransportProvider>\n );\n};\n","// @generated by protoc-gen-connect-query v2.2.0 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file dashboard/v1/notifications.proto (package dashboard.notifications.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { NotificationsService } from \"./notifications_pb\";\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationSetting\n */\nexport const createNotificationSetting = NotificationsService.method.createNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationSetting\n */\nexport const readNotificationSetting = NotificationsService.method.readNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationSetting\n */\nexport const updateNotificationSetting = NotificationsService.method.updateNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationSetting\n */\nexport const deleteNotificationSetting = NotificationsService.method.deleteNotificationSetting;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroup\n */\nexport const createNotificationGroup = NotificationsService.method.createNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroups\n */\nexport const readNotificationGroups = NotificationsService.method.readNotificationGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroup\n */\nexport const updateNotificationGroup = NotificationsService.method.updateNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroup\n */\nexport const deleteNotificationGroup = NotificationsService.method.deleteNotificationGroup;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationUser\n */\nexport const createNotificationUser = NotificationsService.method.createNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationUsers\n */\nexport const readNotificationUsers = NotificationsService.method.readNotificationUsers;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationUser\n */\nexport const updateNotificationUser = NotificationsService.method.updateNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationUser\n */\nexport const deleteNotificationUser = NotificationsService.method.deleteNotificationUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroupUser\n */\nexport const createNotificationGroupUser = NotificationsService.method.createNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroupUsers\n */\nexport const readNotificationGroupUsers = NotificationsService.method.readNotificationGroupUsers;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroupUser\n */\nexport const updateNotificationGroupUser = NotificationsService.method.updateNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroupUser\n */\nexport const deleteNotificationGroupUser = NotificationsService.method.deleteNotificationGroupUser;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessage\n */\nexport const createNotificationMessage = NotificationsService.method.createNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessages\n */\nexport const readNotificationMessages = NotificationsService.method.readNotificationMessages;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetSentNotificationMessages\n */\nexport const getSentNotificationMessages = NotificationsService.method.getSentNotificationMessages;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessage\n */\nexport const updateNotificationMessage = NotificationsService.method.updateNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessage\n */\nexport const deleteNotificationMessage = NotificationsService.method.deleteNotificationMessage;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessageJob\n */\nexport const createNotificationMessageJob = NotificationsService.method.createNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessageJobs\n */\nexport const readNotificationMessageJobs = NotificationsService.method.readNotificationMessageJobs;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessageJob\n */\nexport const updateNotificationMessageJob = NotificationsService.method.updateNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessageJob\n */\nexport const deleteNotificationMessageJob = NotificationsService.method.deleteNotificationMessageJob;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationProducts\n */\nexport const readNotificationProducts = NotificationsService.method.readNotificationProducts;\n\n/**\n * Public endpoints\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationUserSettings\n */\nexport const getNotificationUserSettings = NotificationsService.method.getNotificationUserSettings;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.VerifyUserEmail\n */\nexport const verifyUserEmail = NotificationsService.method.verifyUserEmail;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetUserGroups\n */\nexport const getUserGroups = NotificationsService.method.getUserGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateUserGroups\n */\nexport const updateUserGroups = NotificationsService.method.updateUserGroups;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetProjectedRecipientCount\n */\nexport const getProjectedRecipientCount = NotificationsService.method.getProjectedRecipientCount;\n\n/**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationStats\n */\nexport const getNotificationStats = NotificationsService.method.getNotificationStats;\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file dashboard/v1/notifications.proto (package dashboard.notifications.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { EmptySchema, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { SearchProductsResponseSchema } from \"./product_pb\";\nimport { file_dashboard_v1_product } from \"./product_pb\";\nimport type { NotificationGroupHowOften } from \"../../common/v1/push_notifications_pb\";\nimport { file_common_v1_push_notifications } from \"../../common/v1/push_notifications_pb\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/notifications.proto.\n */\nexport const file_dashboard_v1_notifications: GenFile = /*@__PURE__*/\n fileDesc(\"CiBkYXNoYm9hcmQvdjEvbm90aWZpY2F0aW9ucy5wcm90bxIaZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEiYAoWVmVyaWZ5VXNlckVtYWlsUmVxdWVzdBISCgVlbWFpbBgBIAEoCUgAiAEBEhEKBGNvZGUYAiABKAlIAYgBARIMCgRzbHVnGAMgASgJQggKBl9lbWFpbEIHCgVfY29kZSJ/ChdWZXJpZnlVc2VyRW1haWxSZXNwb25zZRIPCgJvaxgBIAEoCEgAiAEBEhkKDGFjY2Vzc190b2tlbhgCIAEoCUgBiAEBEhQKB3VzZXJfaWQYAyABKAlIAogBAUIFCgNfb2tCDwoNX2FjY2Vzc190b2tlbkIKCghfdXNlcl9pZCJQChRHZXRVc2VyR3JvdXBzUmVxdWVzdBIMCgRzbHVnGAEgASgJEhkKDGFjY2Vzc190b2tlbhgCIAEoCUgAiAEBQg8KDV9hY2Nlc3NfdG9rZW4iiQIKFUdldFVzZXJHcm91cHNSZXNwb25zZRJHCgZncm91cHMYASADKAsyNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRVc2VyR3JvdXBzUmVzcG9uc2UuR3JvdXAapgEKBUdyb3VwEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARINCgVpc19vbhgEIAEoCBI8Cglob3dfb2Z0ZW4YBSABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkgBiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaG93X29mdGVuIncKF1VwZGF0ZVVzZXJHcm91cHNSZXF1ZXN0EgwKBHNsdWcYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIRCglncm91cF9pZHMYAyADKAkSGQoMYWNjZXNzX3Rva2VuGAQgASgJSACIAQFCDwoNX2FjY2Vzc190b2tlbiJvCiJHZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3NSZXF1ZXN0EgwKBHNsdWcYASABKAkSDwoHdXNlcl9pZBgCIAEoCRIZCgxhY2Nlc3NfdG9rZW4YAyABKAlIAIgBAUIPCg1fYWNjZXNzX3Rva2VuIowECiNHZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3NSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAawAIKBlJlc3VsdBIfChdub3RpZmljYXRpb25fc2V0dGluZ19pZBgBIAEoCRIZChFzdWJzY3JpcHRpb25fc2x1ZxgCIAEoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYAyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAUgASgIEiQKHGVtYWlsX25vdGlmaWNhdGlvbl9hdmFpbGFibGUYBiABKAgSIgoac21zX25vdGlmaWNhdGlvbl9hdmFpbGFibGUYByABKAgSJQodbW9iaWxlX25vdGlmaWNhdGlvbl9hdmFpbGFibGUYCCABKAgSHgoWaGFzX3VzZXJfaW5zdGFsbGVkX2FwcBgJIAEoCEIICgZyZXN1bHQiIgogQ3JlYXRlTm90aWZpY2F0aW9uU2V0dGluZ1JlcXVlc3QiIAoeUmVhZE5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0IskBCiBVcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBIfChdub3RpZmljYXRpb25fc2V0dGluZ19pZBgBIAEoCRIZChFzdWJzY3JpcHRpb25fc2x1ZxgCIAEoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYAyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYBCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGAUgASgIIkMKIERlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmdSZXF1ZXN0Eh8KF25vdGlmaWNhdGlvbl9zZXR0aW5nX2lkGAEgASgJIvMCCh9SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGq8BCgZSZXN1bHQSHwoXbm90aWZpY2F0aW9uX3NldHRpbmdfaWQYASABKAkSGQoRc3Vic2NyaXB0aW9uX3NsdWcYAiABKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAMgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAQgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgFIAEoCEIICgZyZXN1bHQi5AEKG05vdGlmaWNhdGlvblNldHRpbmdSZXNwb25zZRJRCgdzdWNjZXNzGAEgASgLMj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGikKBlJlc3VsdBIfChdub3RpZmljYXRpb25fc2V0dGluZ19pZBgBIAEoCUIICgZyZXN1bHQiygEKHkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBIMCgRuYW1lGAEgASgJEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQESPAoJaG93X29mdGVuGAMgASgOMiQuY29tbW9uLnYxLk5vdGlmaWNhdGlvbkdyb3VwSG93T2Z0ZW5IAYgBARIWCglpc19wdWJsaWMYBCABKAhIAogBAUIOCgxfZGVzY3JpcHRpb25CDAoKX2hvd19vZnRlbkIMCgpfaXNfcHVibGljIloKHVJlYWROb3RpZmljYXRpb25Hcm91cHNSZXF1ZXN0EhEKCWdyb3VwX2lkcxgBIAMoCRIXCgpncm91cF9uYW1lGAIgASgJSACIAQFCDQoLX2dyb3VwX25hbWUi6QEKHlVwZGF0ZU5vdGlmaWNhdGlvbkdyb3VwUmVxdWVzdBIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYASABKAkSDAoEbmFtZRgCIAEoCRIYCgtkZXNjcmlwdGlvbhgDIAEoCUgAiAEBEjwKCWhvd19vZnRlbhgEIAEoDjIkLmNvbW1vbi52MS5Ob3RpZmljYXRpb25Hcm91cEhvd09mdGVuSAGIAQESFgoJaXNfcHVibGljGAUgASgISAKIAQFCDgoMX2Rlc2NyaXB0aW9uQgwKCl9ob3dfb2Z0ZW5CDAoKX2lzX3B1YmxpYyI/Ch5EZWxldGVOb3RpZmljYXRpb25Hcm91cFJlcXVlc3QSHQoVbm90aWZpY2F0aW9uX2dyb3VwX2lkGAEgASgJIuoDCh5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVzcG9uc2USVAoHc3VjY2VzcxgBIAEoCzJBLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Hcm91cHNSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABrMAQoFR3JvdXASHQoVbm90aWZpY2F0aW9uX2dyb3VwX2lkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARI8Cglob3dfb2Z0ZW4YBCABKA4yJC5jb21tb24udjEuTm90aWZpY2F0aW9uR3JvdXBIb3dPZnRlbkgBiAEBEg0KBXVzZXJzGAUgASgFEhEKCWlzX3B1YmxpYxgGIAEoCEIOCgxfZGVzY3JpcHRpb25CDAoKX2hvd19vZnRlbhpaCgZSZXN1bHQSUAoGZ3JvdXBzGAEgAygLMkAuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1Jlc3BvbnNlLkdyb3VwQggKBnJlc3VsdCLeAQoZTm90aWZpY2F0aW9uR3JvdXBSZXNwb25zZRJPCgdzdWNjZXNzGAEgASgLMjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABonCgZSZXN1bHQSHQoVbm90aWZpY2F0aW9uX2dyb3VwX2lkGAEgASgJQggKBnJlc3VsdCKjAgodQ3JlYXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QSDAoEc2x1ZxgBIAEoCRINCgVlbWFpbBgCIAEoCRIOCgZncm91cHMYAyADKAkSEgoFcGhvbmUYBCABKAlIAIgBARIXCgpmaXJzdF9uYW1lGAUgASgJSAGIAQESFgoJbGFzdF9uYW1lGAYgASgJSAKIAQESIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAcgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAggASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgJIAEoCEIICgZfcGhvbmVCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZSJYChxSZWFkTm90aWZpY2F0aW9uVXNlcnNSZXF1ZXN0EhAKCHVzZXJfaWRzGAEgAygJEhcKCnVzZXJfZW1haWwYAiABKAlIAIgBAUINCgtfdXNlcl9lbWFpbCKwAgodVXBkYXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QSDAoEc2x1ZxgBIAEoCRIcChRub3RpZmljYXRpb25fdXNlcl9pZBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAUgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAYgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgHIAEoCBIZCgxhY2Nlc3NfdG9rZW4YCCABKAlIAogBAUINCgtfZmlyc3RfbmFtZUIMCgpfbGFzdF9uYW1lQg8KDV9hY2Nlc3NfdG9rZW4iagodRGVsZXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCRIMCgRzbHVnGAIgASgJEhkKDGFjY2Vzc190b2tlbhgDIAEoCUgAiAEBQg8KDV9hY2Nlc3NfdG9rZW4i+AEKHVJlYWROb3RpZmljYXRpb25Vc2Vyc1Jlc3BvbnNlElMKB3N1Y2Nlc3MYASABKAsyQC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uVXNlcnNSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABo5CgZSZXN1bHQSLwoFdXNlcnMYASADKAsyIC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Vc2VyQggKBnJlc3VsdCKpAgoYTm90aWZpY2F0aW9uVXNlclJlc3BvbnNlEk4KB3N1Y2Nlc3MYASABKAsyOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Vc2VyUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAASGQoMYWNjZXNzX3Rva2VuGAMgASgJSAGIAQESFAoHdXNlcl9pZBgEIAEoCUgCiAEBGiYKBlJlc3VsdBIcChRub3RpZmljYXRpb25fdXNlcl9pZBgBIAEoCUIICgZyZXN1bHRCDwoNX2FjY2Vzc190b2tlbkIKCghfdXNlcl9pZCJhCiJDcmVhdGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0Eh0KFW5vdGlmaWNhdGlvbl9ncm91cF9pZBgBIAEoCRIcChRub3RpZmljYXRpb25fdXNlcl9pZBgCIAEoCSI3CiJSZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1JlcXVlc3RzEhEKCWdyb3VwX2lkcxgBIAMoCSKFAQoiVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVxdWVzdBIiChpub3RpZmljYXRpb25fZ3JvdXBfdXNlcl9pZBgBIAEoCRIdChVub3RpZmljYXRpb25fZ3JvdXBfaWQYAiABKAkSHAoUbm90aWZpY2F0aW9uX3VzZXJfaWQYAyABKAkiSAoiRGVsZXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVxdWVzdBIiChpub3RpZmljYXRpb25fZ3JvdXBfdXNlcl9pZBgBIAEoCSKCAgoiUmVhZE5vdGlmaWNhdGlvbkdyb3VwVXNlcnNSZXNwb25zZRJYCgdzdWNjZXNzGAEgASgLMkUuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3VwVXNlcnNSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABo5CgZSZXN1bHQSLwoFdXNlcnMYASADKAsyIC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Vc2VyQggKBnJlc3VsdCLrAQodTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2USUwoHc3VjY2VzcxgBIAEoCzJALmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwVXNlclJlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGiwKBlJlc3VsdBIiChpub3RpZmljYXRpb25fZ3JvdXBfdXNlcl9pZBgBIAEoCUIICgZyZXN1bHQikwQKE05vdGlmaWNhdGlvbk1lc3NhZ2USHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYASABKAkSRQoGc3RhdHVzGAIgASgOMjUuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVN0YXR1cxIrCgdzZW5kX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBINCgV0aXRsZRgEIAEoCRIVCghzdWJ0aXRsZRgFIAEoCUgAiAEBEhQKB21lc3NhZ2UYBiABKAlIAYgBARIWCglpbWFnZV91cmwYByABKAlIAogBARIVCghvcGVuX3VybBgPIAEoCUgDiAEBEg4KBmdyb3VwcxgIIAMoCRIQCghwcm9kdWN0cxgJIAMoCRINCgV1c2VycxgKIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYDCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGA0gASgIEhoKDWVycm9yX21lc3NhZ2UYDiABKAlIBIgBAUILCglfc3VidGl0bGVCCgoIX21lc3NhZ2VCDAoKX2ltYWdlX3VybEILCglfb3Blbl91cmxCEAoOX2Vycm9yX21lc3NhZ2Ui0QMKIENyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0EkUKBnN0YXR1cxgBIAEoDjI1LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VTdGF0dXMSKwoHc2VuZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASDQoFdGl0bGUYAyABKAkSFQoIc3VidGl0bGUYBCABKAlIAIgBARIUCgdtZXNzYWdlGAUgASgJSAGIAQESFgoJaW1hZ2VfdXJsGAYgASgJSAKIAQESFQoIb3Blbl91cmwYDSABKAlIA4gBARIOCgZncm91cHMYByADKAkSEAoIcHJvZHVjdHMYCCADKAkSDQoFdXNlcnMYCSADKAkSIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAogASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAsgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgMIAEoCEILCglfc3VidGl0bGVCCgoIX21lc3NhZ2VCDAoKX2ltYWdlX3VybEILCglfb3Blbl91cmwipAIKIkdldFNlbnROb3RpZmljYXRpb25NZXNzYWdlc1JlcXVlc3QSJAoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYASABKAlIAIgBARIzCgpzdGFydF90aW1lGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgBiAEBEjEKCGVuZF90aW1lGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgCiAEBEiAKE2luY2x1ZGVfZXhwb3J0X2RhdGEYBCABKAhIA4gBAUIaChhfbm90aWZpY2F0aW9uX21lc3NhZ2VfaWRCDQoLX3N0YXJ0X3RpbWVCCwoJX2VuZF90aW1lQhYKFF9pbmNsdWRlX2V4cG9ydF9kYXRhIuEDCiNHZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0U2VudE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaKAoYTm90aWZpY2F0aW9uTWVzc2FnZVN0YXRzEgwKBHNlbnQYASABKAUa6wEKBlJlc3VsdBJOChVub3RpZmljYXRpb25fbWVzc2FnZXMYASADKAsyLy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlEmcKBXN0YXRzGAIgASgLMlguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0U2VudE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UuTm90aWZpY2F0aW9uTWVzc2FnZVN0YXRzEhgKC2V4cG9ydF9kYXRhGAMgASgMSACIAQFCDgoMX2V4cG9ydF9kYXRhQggKBnJlc3VsdCJjCh9SZWFkTm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0EiQKF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJSACIAQFCGgoYX25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkIvwDCiBVcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCRJFCgZzdGF0dXMYAiABKA4yNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlU3RhdHVzEisKB3NlbmRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEg0KBXRpdGxlGAQgASgJEhUKCHN1YnRpdGxlGAUgASgJSACIAQESFAoHbWVzc2FnZRgGIAEoCUgBiAEBEhYKCWltYWdlX3VybBgHIAEoCUgCiAEBEg4KBmdyb3VwcxgIIAMoCRIQCghwcm9kdWN0cxgJIAMoCRINCgV1c2VycxgKIAMoCRIjChttb2JpbGVfbm90aWZpY2F0aW9uX2VuYWJsZWQYCyABKAgSIgoaZW1haWxfbm90aWZpY2F0aW9uX2VuYWJsZWQYDCABKAgSIAoYc21zX25vdGlmaWNhdGlvbl9lbmFibGVkGA0gASgIEhoKDWVycm9yX21lc3NhZ2UYDiABKAlIA4gBAUILCglfc3VidGl0bGVCCgoIX21lc3NhZ2VCDAoKX2ltYWdlX3VybEIQCg5fZXJyb3JfbWVzc2FnZSJDCiBEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgBIAEoCSKdAgogUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USVgoHc3VjY2VzcxgBIAEoCzJDLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlLlJlc3VsdEgAEj0KB2ZhaWx1cmUYAiABKA4yKi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5GYWlsdXJlTWVzc2FnZUgAGlgKBlJlc3VsdBJOChVub3RpZmljYXRpb25fbWVzc2FnZXMYASADKAsyLy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlQggKBnJlc3VsdCLkAQobTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlElEKB3N1Y2Nlc3MYASABKAsyPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaKQoGUmVzdWx0Eh8KF25vdGlmaWNhdGlvbl9tZXNzYWdlX2lkGAEgASgJQggKBnJlc3VsdCKSAgojQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QSSAoGc3RhdHVzGAEgASgOMjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlN0YXR1cxIrCgdzZW50X2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBITCgtjdXN0b21lcl9pZBgDIAEoCRIfChdub3RpZmljYXRpb25fbWVzc2FnZV9pZBgEIAEoCRIQCghwcmlvcml0eRgFIAMoCRIaCg1lcnJvcl9tZXNzYWdlGAYgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UibgoiUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVxdWVzdBIoChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAlIAIgBAUIeChxfbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkIu8BCiNVcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlSm9iUmVxdWVzdBIjChtub3RpZmljYXRpb25fbWVzc2FnZV9qb2JfaWQYASABKAkSSAoGc3RhdHVzGAIgASgOMjguZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlN0YXR1cxIrCgdzZW50X2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIaCg1lcnJvcl9tZXNzYWdlGAQgASgJSACIAQFCEAoOX2Vycm9yX21lc3NhZ2UiSgojRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QSIwobbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkGAEgASgJIvwECiNSZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaqgIKFk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2ISIwobbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkGAEgASgJEkgKBnN0YXR1cxgCIAEoDjI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JTdGF0dXMSKwoHc2VudF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASEwoLY3VzdG9tZXJfaWQYBCABKAkSHwoXbm90aWZpY2F0aW9uX21lc3NhZ2VfaWQYBSABKAkSEAoIcHJpb3JpdHkYBiADKAkSGgoNZXJyb3JfbWVzc2FnZRgHIAEoCUgAiAEBQhAKDl9lcnJvcl9tZXNzYWdlGoMBCgZSZXN1bHQSeQoZbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9icxgBIAMoCzJWLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1Jlc3BvbnNlLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JCCAoGcmVzdWx0Iu4BCh5Ob3RpZmljYXRpb25NZXNzYWdlSm9iUmVzcG9uc2USVAoHc3VjY2VzcxgBIAEoCzJBLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXNwb25zZS5SZXN1bHRIABI9CgdmYWlsdXJlGAIgASgOMiouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRmFpbHVyZU1lc3NhZ2VIABotCgZSZXN1bHQSIwobbm90aWZpY2F0aW9uX21lc3NhZ2Vfam9iX2lkGAEgASgJQggKBnJlc3VsdCLQAgoEVXNlchIcChRub3RpZmljYXRpb25fdXNlcl9pZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIXCgpmaXJzdF9uYW1lGAMgASgJSACIAQESFgoJbGFzdF9uYW1lGAQgASgJSAGIAQESIwobbW9iaWxlX25vdGlmaWNhdGlvbl9lbmFibGVkGAUgASgIEiIKGmVtYWlsX25vdGlmaWNhdGlvbl9lbmFibGVkGAYgASgIEiAKGHNtc19ub3RpZmljYXRpb25fZW5hYmxlZBgHIAEoCBIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIdChBpc19hcHBfaW5zdGFsbGVkGAkgASgISAKIAQFCDQoLX2ZpcnN0X25hbWVCDAoKX2xhc3RfbmFtZUITChFfaXNfYXBwX2luc3RhbGxlZCI2Ch9SZWFkTm90aWZpY2F0aW9uUHJvZHVjdHNSZXF1ZXN0EhMKC3Byb2R1Y3RfaWRzGAEgAygJIlQKIUdldFByb2plY3RlZFJlY2lwaWVudENvdW50UmVxdWVzdBIOCgZncm91cHMYASADKAkSEAoIcHJvZHVjdHMYAiADKAkSDQoFdXNlcnMYAyADKAkicQoiR2V0UHJvamVjdGVkUmVjaXBpZW50Q291bnRSZXNwb25zZRINCgV0b3RhbBgBIAEoBRITCgtlbWFpbF9jb3VudBgCIAEoBRIRCglzbXNfY291bnQYAyABKAUSFAoMbW9iaWxlX2NvdW50GAQgASgFIqEBChtHZXROb3RpZmljYXRpb25TdGF0c1JlcXVlc3QSMwoKc3RhcnRfdGltZRgBIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARIxCghlbmRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAYgBAUINCgtfc3RhcnRfdGltZUILCglfZW5kX3RpbWUi2QUKHEdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2USUgoHc3VjY2VzcxgBIAEoCzI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2UuUmVzdWx0SAASPQoHZmFpbHVyZRgCIAEoDjIqLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkZhaWx1cmVNZXNzYWdlSAAaZAoPU3RhdHVzQnJlYWtkb3duEg4KBmRyYWZ0cxgBIAEoBRIPCgdwbGFubmVkGAIgASgFEhMKC2luX3Byb2dyZXNzGAMgASgFEgwKBHNlbnQYBCABKAUSDQoFZXJyb3IYBSABKAUaPgoQQ2hhbm5lbEJyZWFrZG93bhIOCgZtb2JpbGUYASABKAUSDQoFZW1haWwYAiABKAUSCwoDc21zGAMgASgFGiwKDVRpbWVsaW5lUG9pbnQSDAoEZGF0ZRgBIAEoCRINCgVjb3VudBgCIAEoBRrHAgoGUmVzdWx0EmIKEHN0YXR1c19icmVha2Rvd24YASABKAsySC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlLlN0YXR1c0JyZWFrZG93bhJkChFjaGFubmVsX2JyZWFrZG93bhgCIAEoCzJJLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2UuQ2hhbm5lbEJyZWFrZG93bhJYCgh0aW1lbGluZRgDIAMoCzJGLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldE5vdGlmaWNhdGlvblN0YXRzUmVzcG9uc2UuVGltZWxpbmVQb2ludBIZChF0b3RhbF9zdWJzY3JpYmVycxgEIAEoBUIICgZyZXN1bHQqWQoZTm90aWZpY2F0aW9uTWVzc2FnZVN0YXR1cxIJCgVEUkFGVBAAEgsKB1BMQU5ORUQQARIPCgtJTl9QUk9HUkVTUxACEggKBFNFTlQQAxIJCgVFUlJPUhAEKs4BChxOb3RpZmljYXRpb25NZXNzYWdlSm9iU3RhdHVzEigKJE5PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9TVEFUVVNfVE9ETxAAEi8KK05PVElGSUNBVElPTl9NRVNTQUdFX0pPQl9TVEFUVVNfSU5fUFJPR1JFU1MQARIoCiROT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX1NFTlQQAhIpCiVOT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfU1RBVFVTX0VSUk9SEAMqtw4KDkZhaWx1cmVNZXNzYWdlEhsKF0ZBSUxVUkVfTUVTU0FHRV9VTktOT1dOEAASJQohRkFJTFVSRV9NRVNTQUdFX1BST0pFQ1RfTk9UX0ZPVU5EEAESMgouRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9TRVRUSU5HX05PVF9GT1VORBACEjYKMkZBSUxVUkVfTUVTU0FHRV9DUkVBVEVfTk9USUZJQ0FUSU9OX1NFVFRJTkdfRkFJTEVEEAMSNgoyRkFJTFVSRV9NRVNTQUdFX1VQREFURV9OT1RJRklDQVRJT05fU0VUVElOR19GQUlMRUQQBBI2CjJGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9TRVRUSU5HX0ZBSUxFRBAFEjAKLEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fR1JPVVBfTk9UX0ZPVU5EEAYSMQotRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9HUk9VUFNfTk9UX0ZPVU5EEAcSNAowRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fR1JPVVBfRkFJTEVEEAgSNAowRkFJTFVSRV9NRVNTQUdFX1VQREFURV9OT1RJRklDQVRJT05fR1JPVVBfRkFJTEVEEAkSNAowRkFJTFVSRV9NRVNTQUdFX0RFTEVURV9OT1RJRklDQVRJT05fR1JPVVBfRkFJTEVEEAoSLworRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9VU0VSX05PVF9GT1VORBALEjAKLEZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fVVNFUlNfTk9UX0ZPVU5EEAwSMwovRkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fVVNFUl9GQUlMRUQQDRIzCi9GQUlMVVJFX01FU1NBR0VfVVBEQVRFX05PVElGSUNBVElPTl9VU0VSX0ZBSUxFRBAOEjMKL0ZBSUxVUkVfTUVTU0FHRV9ERUxFVEVfTk9USUZJQ0FUSU9OX1VTRVJfRkFJTEVEEA8SNQoxRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9HUk9VUF9VU0VSX05PVF9GT1VORBAQEjkKNUZBSUxVUkVfTUVTU0FHRV9DUkVBVEVfTk9USUZJQ0FUSU9OX0dST1VQX1VTRVJfRkFJTEVEEBESOQo1RkFJTFVSRV9NRVNTQUdFX1VQREFURV9OT1RJRklDQVRJT05fR1JPVVBfVVNFUl9GQUlMRUQQEhI5CjVGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9HUk9VUF9VU0VSX0ZBSUxFRBATEjIKLkZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9OT1RfRk9VTkQQFBIzCi9GQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX01FU1NBR0VTX05PVF9GT1VORBAVEjYKMkZBSUxVUkVfTUVTU0FHRV9DUkVBVEVfTk9USUZJQ0FUSU9OX01FU1NBR0VfRkFJTEVEEBYSNgoyRkFJTFVSRV9NRVNTQUdFX1VQREFURV9OT1RJRklDQVRJT05fTUVTU0FHRV9GQUlMRUQQFxI2CjJGQUlMVVJFX01FU1NBR0VfREVMRVRFX05PVElGSUNBVElPTl9NRVNTQUdFX0ZBSUxFRBAYEjYKMkZBSUxVUkVfTUVTU0FHRV9OT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfTk9UX0ZPVU5EEBkSNwozRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9NRVNTQUdFX0pPQlNfTk9UX0ZPVU5EEBoSOgo2RkFJTFVSRV9NRVNTQUdFX0NSRUFURV9OT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfRkFJTEVEEBsSOgo2RkFJTFVSRV9NRVNTQUdFX1VQREFURV9OT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfRkFJTEVEEBwSOgo2RkFJTFVSRV9NRVNTQUdFX0RFTEVURV9OT1RJRklDQVRJT05fTUVTU0FHRV9KT0JfRkFJTEVEEB0SNgoyRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9TRVRUSU5HX0FMUkVBRFlfRVhJU1QQHhI7CjdGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX1NFVFRJTkdfU0xVR19BTFJFQURZX1RBS0VOEB8SMwovRkFJTFVSRV9NRVNTQUdFX05PVElGSUNBVElPTl9VU0VSX0FMUkVBRFlfRVhJU1QQIBI0CjBGQUlMVVJFX01FU1NBR0VfTk9USUZJQ0FUSU9OX0dST1VQX0FMUkVBRFlfRVhJU1QQITLlJAoUTm90aWZpY2F0aW9uc1NlcnZpY2USkgEKGUNyZWF0ZU5vdGlmaWNhdGlvblNldHRpbmcSPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DcmVhdGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblNldHRpbmdSZXNwb25zZRKSAQoXUmVhZE5vdGlmaWNhdGlvblNldHRpbmcSOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1JlcXVlc3QaOy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uU2V0dGluZ1Jlc3BvbnNlEpIBChlVcGRhdGVOb3RpZmljYXRpb25TZXR0aW5nEjwuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uU2V0dGluZ1JlcXVlc3QaNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25TZXR0aW5nUmVzcG9uc2USkgEKGURlbGV0ZU5vdGlmaWNhdGlvblNldHRpbmcSPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25TZXR0aW5nUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblNldHRpbmdSZXNwb25zZRKMAQoXQ3JlYXRlTm90aWZpY2F0aW9uR3JvdXASOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DcmVhdGVOb3RpZmljYXRpb25Hcm91cFJlcXVlc3QaNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEo8BChZSZWFkTm90aWZpY2F0aW9uR3JvdXBzEjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3Vwc1JlcXVlc3QaOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBzUmVzcG9uc2USjAEKF1VwZGF0ZU5vdGlmaWNhdGlvbkdyb3VwEjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBSZXF1ZXN0GjUuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBSZXNwb25zZRKMAQoXRGVsZXRlTm90aWZpY2F0aW9uR3JvdXASOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25Hcm91cFJlcXVlc3QaNS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFJlc3BvbnNlEokBChZDcmVhdGVOb3RpZmljYXRpb25Vc2VyEjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ3JlYXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QaNC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Vc2VyUmVzcG9uc2USjAEKFVJlYWROb3RpZmljYXRpb25Vc2VycxI4LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Vc2Vyc1JlcXVlc3QaOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uVXNlcnNSZXNwb25zZRKJAQoWVXBkYXRlTm90aWZpY2F0aW9uVXNlchI5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvblVzZXJSZXF1ZXN0GjQuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uVXNlclJlc3BvbnNlEokBChZEZWxldGVOb3RpZmljYXRpb25Vc2VyEjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uVXNlclJlcXVlc3QaNC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Vc2VyUmVzcG9uc2USmAEKG0NyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlchI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkNyZWF0ZU5vdGlmaWNhdGlvbkdyb3VwVXNlclJlcXVlc3QaOS5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25Hcm91cFVzZXJSZXNwb25zZRKcAQoaUmVhZE5vdGlmaWNhdGlvbkdyb3VwVXNlcnMSPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uR3JvdXBVc2Vyc1JlcXVlc3RzGj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbkdyb3VwVXNlcnNSZXNwb25zZRKYAQobVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyEj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVxdWVzdBo5LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkdyb3VwVXNlclJlc3BvbnNlEpgBChtEZWxldGVOb3RpZmljYXRpb25Hcm91cFVzZXISPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5EZWxldGVOb3RpZmljYXRpb25Hcm91cFVzZXJSZXF1ZXN0GjkuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uR3JvdXBVc2VyUmVzcG9uc2USkgEKGUNyZWF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2USPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5DcmVhdGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRKVAQoYUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzEjsuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuUmVhZE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVxdWVzdBo8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlc1Jlc3BvbnNlEp4BChtHZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXMSPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRTZW50Tm90aWZpY2F0aW9uTWVzc2FnZXNSZXF1ZXN0Gj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0U2VudE5vdGlmaWNhdGlvbk1lc3NhZ2VzUmVzcG9uc2USkgEKGVVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2USPC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5VcGRhdGVOb3RpZmljYXRpb25NZXNzYWdlUmVxdWVzdBo3LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbk1lc3NhZ2VSZXNwb25zZRKSAQoZRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZRI8LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkRlbGV0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VSZXF1ZXN0GjcuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZVJlc3BvbnNlEpsBChxDcmVhdGVOb3RpZmljYXRpb25NZXNzYWdlSm9iEj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuQ3JlYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QaOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iUmVzcG9uc2USngEKG1JlYWROb3RpZmljYXRpb25NZXNzYWdlSm9icxI+LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25NZXNzYWdlSm9ic1JlcXVlc3QaPy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5SZWFkTm90aWZpY2F0aW9uTWVzc2FnZUpvYnNSZXNwb25zZRKbAQocVXBkYXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYhI/LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlVwZGF0ZU5vdGlmaWNhdGlvbk1lc3NhZ2VKb2JSZXF1ZXN0GjouZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlc3BvbnNlEpsBChxEZWxldGVOb3RpZmljYXRpb25NZXNzYWdlSm9iEj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuRGVsZXRlTm90aWZpY2F0aW9uTWVzc2FnZUpvYlJlcXVlc3QaOi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25NZXNzYWdlSm9iUmVzcG9uc2UShQEKGFJlYWROb3RpZmljYXRpb25Qcm9kdWN0cxI7LmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlJlYWROb3RpZmljYXRpb25Qcm9kdWN0c1JlcXVlc3QaLC5kYXNoYm9hcmQucHJvZHVjdC52MS5TZWFyY2hQcm9kdWN0c1Jlc3BvbnNlEp4BChtHZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3MSPi5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25Vc2VyU2V0dGluZ3NSZXF1ZXN0Gj8uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0Tm90aWZpY2F0aW9uVXNlclNldHRpbmdzUmVzcG9uc2USegoPVmVyaWZ5VXNlckVtYWlsEjIuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVmVyaWZ5VXNlckVtYWlsUmVxdWVzdBozLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLlZlcmlmeVVzZXJFbWFpbFJlc3BvbnNlEnQKDUdldFVzZXJHcm91cHMSMC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXRVc2VyR3JvdXBzUmVxdWVzdBoxLmRhc2hib2FyZC5ub3RpZmljYXRpb25zLnYxLkdldFVzZXJHcm91cHNSZXNwb25zZRJfChBVcGRhdGVVc2VyR3JvdXBzEjMuZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuVXBkYXRlVXNlckdyb3Vwc1JlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSmwEKGkdldFByb2plY3RlZFJlY2lwaWVudENvdW50Ej0uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0UHJvamVjdGVkUmVjaXBpZW50Q291bnRSZXF1ZXN0Gj4uZGFzaGJvYXJkLm5vdGlmaWNhdGlvbnMudjEuR2V0UHJvamVjdGVkUmVjaXBpZW50Q291bnRSZXNwb25zZRKJAQoUR2V0Tm90aWZpY2F0aW9uU3RhdHMSNy5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1JlcXVlc3QaOC5kYXNoYm9hcmQubm90aWZpY2F0aW9ucy52MS5HZXROb3RpZmljYXRpb25TdGF0c1Jlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_timestamp, file_google_protobuf_empty, file_dashboard_v1_product, file_common_v1_push_notifications]);\n\n/**\n * @generated from message dashboard.notifications.v1.VerifyUserEmailRequest\n */\nexport type VerifyUserEmailRequest = Message<\"dashboard.notifications.v1.VerifyUserEmailRequest\"> & {\n /**\n * @generated from field: optional string email = 1;\n */\n email?: string;\n\n /**\n * @generated from field: optional string code = 2;\n */\n code?: string;\n\n /**\n * @generated from field: string slug = 3;\n */\n slug: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.VerifyUserEmailRequest.\n * Use `create(VerifyUserEmailRequestSchema)` to create a new message.\n */\nexport const VerifyUserEmailRequestSchema: GenMessage<VerifyUserEmailRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.VerifyUserEmailResponse\n */\nexport type VerifyUserEmailResponse = Message<\"dashboard.notifications.v1.VerifyUserEmailResponse\"> & {\n /**\n * @generated from field: optional bool ok = 1;\n */\n ok?: boolean;\n\n /**\n * @generated from field: optional string access_token = 2;\n */\n accessToken?: string;\n\n /**\n * @generated from field: optional string user_id = 3;\n */\n userId?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.VerifyUserEmailResponse.\n * Use `create(VerifyUserEmailResponseSchema)` to create a new message.\n */\nexport const VerifyUserEmailResponseSchema: GenMessage<VerifyUserEmailResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsRequest\n */\nexport type GetUserGroupsRequest = Message<\"dashboard.notifications.v1.GetUserGroupsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * if access token is not provided, all groups are off and user needs to check which groups are for him.\n *\n * @generated from field: optional string access_token = 2;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsRequest.\n * Use `create(GetUserGroupsRequestSchema)` to create a new message.\n */\nexport const GetUserGroupsRequestSchema: GenMessage<GetUserGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 2);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsResponse\n */\nexport type GetUserGroupsResponse = Message<\"dashboard.notifications.v1.GetUserGroupsResponse\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.GetUserGroupsResponse.Group groups = 1;\n */\n groups: GetUserGroupsResponse_Group[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsResponse.\n * Use `create(GetUserGroupsResponseSchema)` to create a new message.\n */\nexport const GetUserGroupsResponseSchema: GenMessage<GetUserGroupsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 3);\n\n/**\n * @generated from message dashboard.notifications.v1.GetUserGroupsResponse.Group\n */\nexport type GetUserGroupsResponse_Group = Message<\"dashboard.notifications.v1.GetUserGroupsResponse.Group\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: bool is_on = 4;\n */\n isOn: boolean;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 5;\n */\n howOften?: NotificationGroupHowOften;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetUserGroupsResponse.Group.\n * Use `create(GetUserGroupsResponse_GroupSchema)` to create a new message.\n */\nexport const GetUserGroupsResponse_GroupSchema: GenMessage<GetUserGroupsResponse_Group> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 3, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateUserGroupsRequest\n */\nexport type UpdateUserGroupsRequest = Message<\"dashboard.notifications.v1.UpdateUserGroupsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: repeated string group_ids = 3;\n */\n groupIds: string[];\n\n /**\n * @generated from field: optional string access_token = 4;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateUserGroupsRequest.\n * Use `create(UpdateUserGroupsRequestSchema)` to create a new message.\n */\nexport const UpdateUserGroupsRequestSchema: GenMessage<UpdateUserGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 4);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsRequest\n */\nexport type GetNotificationUserSettingsRequest = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string user_id = 2;\n */\n userId: string;\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsRequest.\n * Use `create(GetNotificationUserSettingsRequestSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsRequestSchema: GenMessage<GetNotificationUserSettingsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 5);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsResponse\n */\nexport type GetNotificationUserSettingsResponse = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationUserSettingsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result success = 1;\n */\n value: GetNotificationUserSettingsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsResponse.\n * Use `create(GetNotificationUserSettingsResponseSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsResponseSchema: GenMessage<GetNotificationUserSettingsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 6);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result\n */\nexport type GetNotificationUserSettingsResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * it can be unavailable for certain of reasons.\n *\n * @generated from field: bool email_notification_available = 6;\n */\n emailNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool sms_notification_available = 7;\n */\n smsNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool mobile_notification_available = 8;\n */\n mobileNotificationAvailable: boolean;\n\n /**\n * @generated from field: bool has_user_installed_app = 9;\n */\n hasUserInstalledApp: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationUserSettingsResponse.Result.\n * Use `create(GetNotificationUserSettingsResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationUserSettingsResponse_ResultSchema: GenMessage<GetNotificationUserSettingsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 6, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationSettingRequest\n */\nexport type CreateNotificationSettingRequest = Message<\"dashboard.notifications.v1.CreateNotificationSettingRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationSettingRequest.\n * Use `create(CreateNotificationSettingRequestSchema)` to create a new message.\n */\nexport const CreateNotificationSettingRequestSchema: GenMessage<CreateNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 7);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingRequest\n */\nexport type ReadNotificationSettingRequest = Message<\"dashboard.notifications.v1.ReadNotificationSettingRequest\"> & {\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingRequest.\n * Use `create(ReadNotificationSettingRequestSchema)` to create a new message.\n */\nexport const ReadNotificationSettingRequestSchema: GenMessage<ReadNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 8);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationSettingRequest\n */\nexport type UpdateNotificationSettingRequest = Message<\"dashboard.notifications.v1.UpdateNotificationSettingRequest\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationSettingRequest.\n * Use `create(UpdateNotificationSettingRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationSettingRequestSchema: GenMessage<UpdateNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 9);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationSettingRequest\n */\nexport type DeleteNotificationSettingRequest = Message<\"dashboard.notifications.v1.DeleteNotificationSettingRequest\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationSettingRequest.\n * Use `create(DeleteNotificationSettingRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationSettingRequestSchema: GenMessage<DeleteNotificationSettingRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 10);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingResponse\n */\nexport type ReadNotificationSettingResponse = Message<\"dashboard.notifications.v1.ReadNotificationSettingResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationSettingResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationSettingResponse.Result success = 1;\n */\n value: ReadNotificationSettingResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingResponse.\n * Use `create(ReadNotificationSettingResponseSchema)` to create a new message.\n */\nexport const ReadNotificationSettingResponseSchema: GenMessage<ReadNotificationSettingResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 11);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationSettingResponse.Result\n */\nexport type ReadNotificationSettingResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationSettingResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n\n /**\n * @generated from field: string subscription_slug = 2;\n */\n subscriptionSlug: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 3;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 4;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 5;\n */\n smsNotificationEnabled: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationSettingResponse.Result.\n * Use `create(ReadNotificationSettingResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationSettingResponse_ResultSchema: GenMessage<ReadNotificationSettingResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 11, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationSettingResponse\n */\nexport type NotificationSettingResponse = Message<\"dashboard.notifications.v1.NotificationSettingResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationSettingResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationSettingResponse.Result success = 1;\n */\n value: NotificationSettingResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationSettingResponse.\n * Use `create(NotificationSettingResponseSchema)` to create a new message.\n */\nexport const NotificationSettingResponseSchema: GenMessage<NotificationSettingResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 12);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationSettingResponse.Result\n */\nexport type NotificationSettingResponse_Result = Message<\"dashboard.notifications.v1.NotificationSettingResponse.Result\"> & {\n /**\n * @generated from field: string notification_setting_id = 1;\n */\n notificationSettingId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationSettingResponse.Result.\n * Use `create(NotificationSettingResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationSettingResponse_ResultSchema: GenMessage<NotificationSettingResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 12, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationGroupRequest\n */\nexport type CreateNotificationGroupRequest = Message<\"dashboard.notifications.v1.CreateNotificationGroupRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 2;\n */\n description?: string;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 3;\n */\n howOften?: NotificationGroupHowOften;\n\n /**\n * @generated from field: optional bool is_public = 4;\n */\n isPublic?: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationGroupRequest.\n * Use `create(CreateNotificationGroupRequestSchema)` to create a new message.\n */\nexport const CreateNotificationGroupRequestSchema: GenMessage<CreateNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 13);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsRequest\n */\nexport type ReadNotificationGroupsRequest = Message<\"dashboard.notifications.v1.ReadNotificationGroupsRequest\"> & {\n /**\n * @generated from field: repeated string group_ids = 1;\n */\n groupIds: string[];\n\n /**\n * @generated from field: optional string group_name = 2;\n */\n groupName?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsRequest.\n * Use `create(ReadNotificationGroupsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsRequestSchema: GenMessage<ReadNotificationGroupsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 14);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationGroupRequest\n */\nexport type UpdateNotificationGroupRequest = Message<\"dashboard.notifications.v1.UpdateNotificationGroupRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 4;\n */\n howOften?: NotificationGroupHowOften;\n\n /**\n * @generated from field: optional bool is_public = 5;\n */\n isPublic?: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationGroupRequest.\n * Use `create(UpdateNotificationGroupRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationGroupRequestSchema: GenMessage<UpdateNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 15);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationGroupRequest\n */\nexport type DeleteNotificationGroupRequest = Message<\"dashboard.notifications.v1.DeleteNotificationGroupRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationGroupRequest.\n * Use `create(DeleteNotificationGroupRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationGroupRequestSchema: GenMessage<DeleteNotificationGroupRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 16);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse\n */\nexport type ReadNotificationGroupsResponse = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationGroupsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationGroupsResponse.Result success = 1;\n */\n value: ReadNotificationGroupsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.\n * Use `create(ReadNotificationGroupsResponseSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponseSchema: GenMessage<ReadNotificationGroupsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse.Group\n */\nexport type ReadNotificationGroupsResponse_Group = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse.Group\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional common.v1.NotificationGroupHowOften how_often = 4;\n */\n howOften?: NotificationGroupHowOften;\n\n /**\n * @generated from field: int32 users = 5;\n */\n users: number;\n\n /**\n * @generated from field: bool is_public = 6;\n */\n isPublic: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.Group.\n * Use `create(ReadNotificationGroupsResponse_GroupSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponse_GroupSchema: GenMessage<ReadNotificationGroupsResponse_Group> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupsResponse.Result\n */\nexport type ReadNotificationGroupsResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationGroupsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.ReadNotificationGroupsResponse.Group groups = 1;\n */\n groups: ReadNotificationGroupsResponse_Group[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupsResponse.Result.\n * Use `create(ReadNotificationGroupsResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationGroupsResponse_ResultSchema: GenMessage<ReadNotificationGroupsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 17, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupResponse\n */\nexport type NotificationGroupResponse = Message<\"dashboard.notifications.v1.NotificationGroupResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationGroupResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationGroupResponse.Result success = 1;\n */\n value: NotificationGroupResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupResponse.\n * Use `create(NotificationGroupResponseSchema)` to create a new message.\n */\nexport const NotificationGroupResponseSchema: GenMessage<NotificationGroupResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 18);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupResponse.Result\n */\nexport type NotificationGroupResponse_Result = Message<\"dashboard.notifications.v1.NotificationGroupResponse.Result\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupResponse.Result.\n * Use `create(NotificationGroupResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationGroupResponse_ResultSchema: GenMessage<NotificationGroupResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 18, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationUserRequest\n */\nexport type CreateNotificationUserRequest = Message<\"dashboard.notifications.v1.CreateNotificationUserRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: repeated string groups = 3;\n */\n groups: string[];\n\n /**\n * @generated from field: optional string phone = 4;\n */\n phone?: string;\n\n /**\n * @generated from field: optional string first_name = 5;\n */\n firstName?: string;\n\n /**\n * @generated from field: optional string last_name = 6;\n */\n lastName?: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 7;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 8;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 9;\n */\n smsNotificationEnabled: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationUserRequest.\n * Use `create(CreateNotificationUserRequestSchema)` to create a new message.\n */\nexport const CreateNotificationUserRequestSchema: GenMessage<CreateNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 19);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersRequest\n */\nexport type ReadNotificationUsersRequest = Message<\"dashboard.notifications.v1.ReadNotificationUsersRequest\"> & {\n /**\n * @generated from field: repeated string user_ids = 1;\n */\n userIds: string[];\n\n /**\n * @generated from field: optional string user_email = 2;\n */\n userEmail?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersRequest.\n * Use `create(ReadNotificationUsersRequestSchema)` to create a new message.\n */\nexport const ReadNotificationUsersRequestSchema: GenMessage<ReadNotificationUsersRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 20);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationUserRequest\n */\nexport type UpdateNotificationUserRequest = Message<\"dashboard.notifications.v1.UpdateNotificationUserRequest\"> & {\n /**\n * @generated from field: string slug = 1;\n */\n slug: string;\n\n /**\n * @generated from field: string notification_user_id = 2;\n */\n notificationUserId: string;\n\n /**\n * @generated from field: optional string first_name = 3;\n */\n firstName?: string;\n\n /**\n * @generated from field: optional string last_name = 4;\n */\n lastName?: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 5;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 6;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 7;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string access_token = 8;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationUserRequest.\n * Use `create(UpdateNotificationUserRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationUserRequestSchema: GenMessage<UpdateNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 21);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationUserRequest\n */\nexport type DeleteNotificationUserRequest = Message<\"dashboard.notifications.v1.DeleteNotificationUserRequest\"> & {\n /**\n * @generated from field: string user_id = 1;\n */\n userId: string;\n\n /**\n * @generated from field: string slug = 2;\n */\n slug: string;\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationUserRequest.\n * Use `create(DeleteNotificationUserRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationUserRequestSchema: GenMessage<DeleteNotificationUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 22);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersResponse\n */\nexport type ReadNotificationUsersResponse = Message<\"dashboard.notifications.v1.ReadNotificationUsersResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationUsersResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationUsersResponse.Result success = 1;\n */\n value: ReadNotificationUsersResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersResponse.\n * Use `create(ReadNotificationUsersResponseSchema)` to create a new message.\n */\nexport const ReadNotificationUsersResponseSchema: GenMessage<ReadNotificationUsersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 23);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationUsersResponse.Result\n */\nexport type ReadNotificationUsersResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationUsersResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.User users = 1;\n */\n users: User[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationUsersResponse.Result.\n * Use `create(ReadNotificationUsersResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationUsersResponse_ResultSchema: GenMessage<ReadNotificationUsersResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 23, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationUserResponse\n */\nexport type NotificationUserResponse = Message<\"dashboard.notifications.v1.NotificationUserResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationUserResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationUserResponse.Result success = 1;\n */\n value: NotificationUserResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: optional string access_token = 3;\n */\n accessToken?: string;\n\n /**\n * @generated from field: optional string user_id = 4;\n */\n userId?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationUserResponse.\n * Use `create(NotificationUserResponseSchema)` to create a new message.\n */\nexport const NotificationUserResponseSchema: GenMessage<NotificationUserResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 24);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationUserResponse.Result\n */\nexport type NotificationUserResponse_Result = Message<\"dashboard.notifications.v1.NotificationUserResponse.Result\"> & {\n /**\n * @generated from field: string notification_user_id = 1;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationUserResponse.Result.\n * Use `create(NotificationUserResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationUserResponse_ResultSchema: GenMessage<NotificationUserResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 24, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationGroupUserRequest\n */\nexport type CreateNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.CreateNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_id = 1;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string notification_user_id = 2;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationGroupUserRequest.\n * Use `create(CreateNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const CreateNotificationGroupUserRequestSchema: GenMessage<CreateNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 25);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersRequests\n */\nexport type ReadNotificationGroupUsersRequests = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersRequests\"> & {\n /**\n * @generated from field: repeated string group_ids = 1;\n */\n groupIds: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersRequests.\n * Use `create(ReadNotificationGroupUsersRequestsSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersRequestsSchema: GenMessage<ReadNotificationGroupUsersRequests> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 26);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationGroupUserRequest\n */\nexport type UpdateNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.UpdateNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n\n /**\n * @generated from field: string notification_group_id = 2;\n */\n notificationGroupId: string;\n\n /**\n * @generated from field: string notification_user_id = 3;\n */\n notificationUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationGroupUserRequest.\n * Use `create(UpdateNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationGroupUserRequestSchema: GenMessage<UpdateNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 27);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationGroupUserRequest\n */\nexport type DeleteNotificationGroupUserRequest = Message<\"dashboard.notifications.v1.DeleteNotificationGroupUserRequest\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationGroupUserRequest.\n * Use `create(DeleteNotificationGroupUserRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationGroupUserRequestSchema: GenMessage<DeleteNotificationGroupUserRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 28);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersResponse\n */\nexport type ReadNotificationGroupUsersResponse = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationGroupUsersResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result success = 1;\n */\n value: ReadNotificationGroupUsersResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.\n * Use `create(ReadNotificationGroupUsersResponseSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersResponseSchema: GenMessage<ReadNotificationGroupUsersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 29);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result\n */\nexport type ReadNotificationGroupUsersResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.User users = 1;\n */\n users: User[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationGroupUsersResponse.Result.\n * Use `create(ReadNotificationGroupUsersResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationGroupUsersResponse_ResultSchema: GenMessage<ReadNotificationGroupUsersResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 29, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupUserResponse\n */\nexport type NotificationGroupUserResponse = Message<\"dashboard.notifications.v1.NotificationGroupUserResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationGroupUserResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationGroupUserResponse.Result success = 1;\n */\n value: NotificationGroupUserResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupUserResponse.\n * Use `create(NotificationGroupUserResponseSchema)` to create a new message.\n */\nexport const NotificationGroupUserResponseSchema: GenMessage<NotificationGroupUserResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 30);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationGroupUserResponse.Result\n */\nexport type NotificationGroupUserResponse_Result = Message<\"dashboard.notifications.v1.NotificationGroupUserResponse.Result\"> & {\n /**\n * @generated from field: string notification_group_user_id = 1;\n */\n notificationGroupUserId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationGroupUserResponse.Result.\n * Use `create(NotificationGroupUserResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationGroupUserResponse_ResultSchema: GenMessage<NotificationGroupUserResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 30, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessage\n */\nexport type NotificationMessage = Message<\"dashboard.notifications.v1.NotificationMessage\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 2;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 3;\n */\n sendAt?: Timestamp;\n\n /**\n * @generated from field: string title = 4;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 5;\n */\n subtitle?: string;\n\n /**\n * @generated from field: optional string message = 6;\n */\n message?: string;\n\n /**\n * @generated from field: optional string image_url = 7;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: optional string open_url = 15;\n */\n openUrl?: string;\n\n /**\n * @generated from field: repeated string groups = 8;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 9;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 10;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 11;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 12;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 13;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string error_message = 14;\n */\n errorMessage?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessage.\n * Use `create(NotificationMessageSchema)` to create a new message.\n */\nexport const NotificationMessageSchema: GenMessage<NotificationMessage> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 31);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationMessageRequest\n */\nexport type CreateNotificationMessageRequest = Message<\"dashboard.notifications.v1.CreateNotificationMessageRequest\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 1;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 2;\n */\n sendAt?: Timestamp;\n\n /**\n * @generated from field: string title = 3;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 4;\n */\n subtitle?: string;\n\n /**\n * @generated from field: optional string message = 5;\n */\n message?: string;\n\n /**\n * @generated from field: optional string image_url = 6;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: optional string open_url = 13;\n */\n openUrl?: string;\n\n /**\n * @generated from field: repeated string groups = 7;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 8;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 9;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 10;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 11;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 12;\n */\n smsNotificationEnabled: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationMessageRequest.\n * Use `create(CreateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const CreateNotificationMessageRequestSchema: GenMessage<CreateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 32);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesRequest\n */\nexport type GetSentNotificationMessagesRequest = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesRequest\"> & {\n /**\n * @generated from field: optional string notification_message_id = 1;\n */\n notificationMessageId?: string;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp start_time = 2;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp end_time = 3;\n */\n endTime?: Timestamp;\n\n /**\n * @generated from field: optional bool include_export_data = 4;\n */\n includeExportData?: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesRequest.\n * Use `create(GetSentNotificationMessagesRequestSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesRequestSchema: GenMessage<GetSentNotificationMessagesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 33);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse\n */\nexport type GetSentNotificationMessagesResponse = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetSentNotificationMessagesResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result success = 1;\n */\n value: GetSentNotificationMessagesResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.\n * Use `create(GetSentNotificationMessagesResponseSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponseSchema: GenMessage<GetSentNotificationMessagesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 34);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats\n */\nexport type GetSentNotificationMessagesResponse_NotificationMessageStats = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats\"> & {\n /**\n * @generated from field: int32 sent = 1;\n */\n sent: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats.\n * Use `create(GetSentNotificationMessagesResponse_NotificationMessageStatsSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponse_NotificationMessageStatsSchema: GenMessage<GetSentNotificationMessagesResponse_NotificationMessageStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 34, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result\n */\nexport type GetSentNotificationMessagesResponse_Result = Message<\"dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessage notification_messages = 1;\n */\n notificationMessages: NotificationMessage[];\n\n /**\n * @generated from field: dashboard.notifications.v1.GetSentNotificationMessagesResponse.NotificationMessageStats stats = 2;\n */\n stats?: GetSentNotificationMessagesResponse_NotificationMessageStats;\n\n /**\n * @generated from field: optional bytes export_data = 3;\n */\n exportData?: Uint8Array;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetSentNotificationMessagesResponse.Result.\n * Use `create(GetSentNotificationMessagesResponse_ResultSchema)` to create a new message.\n */\nexport const GetSentNotificationMessagesResponse_ResultSchema: GenMessage<GetSentNotificationMessagesResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 34, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesRequest\n */\nexport type ReadNotificationMessagesRequest = Message<\"dashboard.notifications.v1.ReadNotificationMessagesRequest\"> & {\n /**\n * @generated from field: optional string notification_message_id = 1;\n */\n notificationMessageId?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesRequest.\n * Use `create(ReadNotificationMessagesRequestSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesRequestSchema: GenMessage<ReadNotificationMessagesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 35);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationMessageRequest\n */\nexport type UpdateNotificationMessageRequest = Message<\"dashboard.notifications.v1.UpdateNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageStatus status = 2;\n */\n status: NotificationMessageStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp send_at = 3;\n */\n sendAt?: Timestamp;\n\n /**\n * @generated from field: string title = 4;\n */\n title: string;\n\n /**\n * @generated from field: optional string subtitle = 5;\n */\n subtitle?: string;\n\n /**\n * @generated from field: optional string message = 6;\n */\n message?: string;\n\n /**\n * @generated from field: optional string image_url = 7;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: repeated string groups = 8;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 9;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 10;\n */\n users: string[];\n\n /**\n * @generated from field: bool mobile_notification_enabled = 11;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 12;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 13;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: optional string error_message = 14;\n */\n errorMessage?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationMessageRequest.\n * Use `create(UpdateNotificationMessageRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationMessageRequestSchema: GenMessage<UpdateNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 36);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationMessageRequest\n */\nexport type DeleteNotificationMessageRequest = Message<\"dashboard.notifications.v1.DeleteNotificationMessageRequest\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationMessageRequest.\n * Use `create(DeleteNotificationMessageRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationMessageRequestSchema: GenMessage<DeleteNotificationMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 37);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesResponse\n */\nexport type ReadNotificationMessagesResponse = Message<\"dashboard.notifications.v1.ReadNotificationMessagesResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationMessagesResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationMessagesResponse.Result success = 1;\n */\n value: ReadNotificationMessagesResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesResponse.\n * Use `create(ReadNotificationMessagesResponseSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesResponseSchema: GenMessage<ReadNotificationMessagesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 38);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessagesResponse.Result\n */\nexport type ReadNotificationMessagesResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationMessagesResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.NotificationMessage notification_messages = 1;\n */\n notificationMessages: NotificationMessage[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessagesResponse.Result.\n * Use `create(ReadNotificationMessagesResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationMessagesResponse_ResultSchema: GenMessage<ReadNotificationMessagesResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 38, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageResponse\n */\nexport type NotificationMessageResponse = Message<\"dashboard.notifications.v1.NotificationMessageResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationMessageResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageResponse.Result success = 1;\n */\n value: NotificationMessageResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageResponse.\n * Use `create(NotificationMessageResponseSchema)` to create a new message.\n */\nexport const NotificationMessageResponseSchema: GenMessage<NotificationMessageResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 39);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageResponse.Result\n */\nexport type NotificationMessageResponse_Result = Message<\"dashboard.notifications.v1.NotificationMessageResponse.Result\"> & {\n /**\n * @generated from field: string notification_message_id = 1;\n */\n notificationMessageId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageResponse.Result.\n * Use `create(NotificationMessageResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationMessageResponse_ResultSchema: GenMessage<NotificationMessageResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 39, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.CreateNotificationMessageJobRequest\n */\nexport type CreateNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.CreateNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 1;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 2;\n */\n sentAt?: Timestamp;\n\n /**\n * @generated from field: string customer_id = 3;\n */\n customerId: string;\n\n /**\n * @generated from field: string notification_message_id = 4;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: repeated string priority = 5;\n */\n priority: string[];\n\n /**\n * @generated from field: optional string error_message = 6;\n */\n errorMessage?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.CreateNotificationMessageJobRequest.\n * Use `create(CreateNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const CreateNotificationMessageJobRequestSchema: GenMessage<CreateNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 40);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsRequest\n */\nexport type ReadNotificationMessageJobsRequest = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsRequest\"> & {\n /**\n * @generated from field: optional string notification_message_job_id = 1;\n */\n notificationMessageJobId?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsRequest.\n * Use `create(ReadNotificationMessageJobsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsRequestSchema: GenMessage<ReadNotificationMessageJobsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 41);\n\n/**\n * @generated from message dashboard.notifications.v1.UpdateNotificationMessageJobRequest\n */\nexport type UpdateNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.UpdateNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 2;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 3;\n */\n sentAt?: Timestamp;\n\n /**\n * @generated from field: optional string error_message = 4;\n */\n errorMessage?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.UpdateNotificationMessageJobRequest.\n * Use `create(UpdateNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const UpdateNotificationMessageJobRequestSchema: GenMessage<UpdateNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 42);\n\n/**\n * @generated from message dashboard.notifications.v1.DeleteNotificationMessageJobRequest\n */\nexport type DeleteNotificationMessageJobRequest = Message<\"dashboard.notifications.v1.DeleteNotificationMessageJobRequest\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.DeleteNotificationMessageJobRequest.\n * Use `create(DeleteNotificationMessageJobRequestSchema)` to create a new message.\n */\nexport const DeleteNotificationMessageJobRequestSchema: GenMessage<DeleteNotificationMessageJobRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 43);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse\n */\nexport type ReadNotificationMessageJobsResponse = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.ReadNotificationMessageJobsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result success = 1;\n */\n value: ReadNotificationMessageJobsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.\n * Use `create(ReadNotificationMessageJobsResponseSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponseSchema: GenMessage<ReadNotificationMessageJobsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob\n */\nexport type ReadNotificationMessageJobsResponse_NotificationMessageJob = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobStatus status = 2;\n */\n status: NotificationMessageJobStatus;\n\n /**\n * @generated from field: google.protobuf.Timestamp sent_at = 3;\n */\n sentAt?: Timestamp;\n\n /**\n * @generated from field: string customer_id = 4;\n */\n customerId: string;\n\n /**\n * @generated from field: string notification_message_id = 5;\n */\n notificationMessageId: string;\n\n /**\n * @generated from field: repeated string priority = 6;\n */\n priority: string[];\n\n /**\n * @generated from field: optional string error_message = 7;\n */\n errorMessage?: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob.\n * Use `create(ReadNotificationMessageJobsResponse_NotificationMessageJobSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponse_NotificationMessageJobSchema: GenMessage<ReadNotificationMessageJobsResponse_NotificationMessageJob> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result\n */\nexport type ReadNotificationMessageJobsResponse_Result = Message<\"dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.notifications.v1.ReadNotificationMessageJobsResponse.NotificationMessageJob notification_message_jobs = 1;\n */\n notificationMessageJobs: ReadNotificationMessageJobsResponse_NotificationMessageJob[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationMessageJobsResponse.Result.\n * Use `create(ReadNotificationMessageJobsResponse_ResultSchema)` to create a new message.\n */\nexport const ReadNotificationMessageJobsResponse_ResultSchema: GenMessage<ReadNotificationMessageJobsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 44, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageJobResponse\n */\nexport type NotificationMessageJobResponse = Message<\"dashboard.notifications.v1.NotificationMessageJobResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.NotificationMessageJobResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.NotificationMessageJobResponse.Result success = 1;\n */\n value: NotificationMessageJobResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageJobResponse.\n * Use `create(NotificationMessageJobResponseSchema)` to create a new message.\n */\nexport const NotificationMessageJobResponseSchema: GenMessage<NotificationMessageJobResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 45);\n\n/**\n * @generated from message dashboard.notifications.v1.NotificationMessageJobResponse.Result\n */\nexport type NotificationMessageJobResponse_Result = Message<\"dashboard.notifications.v1.NotificationMessageJobResponse.Result\"> & {\n /**\n * @generated from field: string notification_message_job_id = 1;\n */\n notificationMessageJobId: string;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.NotificationMessageJobResponse.Result.\n * Use `create(NotificationMessageJobResponse_ResultSchema)` to create a new message.\n */\nexport const NotificationMessageJobResponse_ResultSchema: GenMessage<NotificationMessageJobResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 45, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.User\n */\nexport type User = Message<\"dashboard.notifications.v1.User\"> & {\n /**\n * @generated from field: string notification_user_id = 1;\n */\n notificationUserId: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: optional string first_name = 3;\n */\n firstName?: string;\n\n /**\n * @generated from field: optional string last_name = 4;\n */\n lastName?: string;\n\n /**\n * @generated from field: bool mobile_notification_enabled = 5;\n */\n mobileNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool email_notification_enabled = 6;\n */\n emailNotificationEnabled: boolean;\n\n /**\n * @generated from field: bool sms_notification_enabled = 7;\n */\n smsNotificationEnabled: boolean;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 8;\n */\n createdAt?: Timestamp;\n\n /**\n * @generated from field: optional bool is_app_installed = 9;\n */\n isAppInstalled?: boolean;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.User.\n * Use `create(UserSchema)` to create a new message.\n */\nexport const UserSchema: GenMessage<User> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 46);\n\n/**\n * @generated from message dashboard.notifications.v1.ReadNotificationProductsRequest\n */\nexport type ReadNotificationProductsRequest = Message<\"dashboard.notifications.v1.ReadNotificationProductsRequest\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.ReadNotificationProductsRequest.\n * Use `create(ReadNotificationProductsRequestSchema)` to create a new message.\n */\nexport const ReadNotificationProductsRequestSchema: GenMessage<ReadNotificationProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 47);\n\n/**\n * @generated from message dashboard.notifications.v1.GetProjectedRecipientCountRequest\n */\nexport type GetProjectedRecipientCountRequest = Message<\"dashboard.notifications.v1.GetProjectedRecipientCountRequest\"> & {\n /**\n * @generated from field: repeated string groups = 1;\n */\n groups: string[];\n\n /**\n * @generated from field: repeated string products = 2;\n */\n products: string[];\n\n /**\n * @generated from field: repeated string users = 3;\n */\n users: string[];\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetProjectedRecipientCountRequest.\n * Use `create(GetProjectedRecipientCountRequestSchema)` to create a new message.\n */\nexport const GetProjectedRecipientCountRequestSchema: GenMessage<GetProjectedRecipientCountRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 48);\n\n/**\n * @generated from message dashboard.notifications.v1.GetProjectedRecipientCountResponse\n */\nexport type GetProjectedRecipientCountResponse = Message<\"dashboard.notifications.v1.GetProjectedRecipientCountResponse\"> & {\n /**\n * @generated from field: int32 total = 1;\n */\n total: number;\n\n /**\n * @generated from field: int32 email_count = 2;\n */\n emailCount: number;\n\n /**\n * @generated from field: int32 sms_count = 3;\n */\n smsCount: number;\n\n /**\n * @generated from field: int32 mobile_count = 4;\n */\n mobileCount: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetProjectedRecipientCountResponse.\n * Use `create(GetProjectedRecipientCountResponseSchema)` to create a new message.\n */\nexport const GetProjectedRecipientCountResponseSchema: GenMessage<GetProjectedRecipientCountResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 49);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsRequest\n */\nexport type GetNotificationStatsRequest = Message<\"dashboard.notifications.v1.GetNotificationStatsRequest\"> & {\n /**\n * @generated from field: optional google.protobuf.Timestamp start_time = 1;\n */\n startTime?: Timestamp;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp end_time = 2;\n */\n endTime?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsRequest.\n * Use `create(GetNotificationStatsRequestSchema)` to create a new message.\n */\nexport const GetNotificationStatsRequestSchema: GenMessage<GetNotificationStatsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 50);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse\n */\nexport type GetNotificationStatsResponse = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse\"> & {\n /**\n * @generated from oneof dashboard.notifications.v1.GetNotificationStatsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.Result success = 1;\n */\n value: GetNotificationStatsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.notifications.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.\n * Use `create(GetNotificationStatsResponseSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponseSchema: GenMessage<GetNotificationStatsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown\n */\nexport type GetNotificationStatsResponse_StatusBreakdown = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown\"> & {\n /**\n * @generated from field: int32 drafts = 1;\n */\n drafts: number;\n\n /**\n * @generated from field: int32 planned = 2;\n */\n planned: number;\n\n /**\n * @generated from field: int32 in_progress = 3;\n */\n inProgress: number;\n\n /**\n * @generated from field: int32 sent = 4;\n */\n sent: number;\n\n /**\n * @generated from field: int32 error = 5;\n */\n error: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown.\n * Use `create(GetNotificationStatsResponse_StatusBreakdownSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_StatusBreakdownSchema: GenMessage<GetNotificationStatsResponse_StatusBreakdown> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51, 0);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown\n */\nexport type GetNotificationStatsResponse_ChannelBreakdown = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown\"> & {\n /**\n * @generated from field: int32 mobile = 1;\n */\n mobile: number;\n\n /**\n * @generated from field: int32 email = 2;\n */\n email: number;\n\n /**\n * @generated from field: int32 sms = 3;\n */\n sms: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown.\n * Use `create(GetNotificationStatsResponse_ChannelBreakdownSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_ChannelBreakdownSchema: GenMessage<GetNotificationStatsResponse_ChannelBreakdown> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51, 1);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint\n */\nexport type GetNotificationStatsResponse_TimelinePoint = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint\"> & {\n /**\n * @generated from field: string date = 1;\n */\n date: string;\n\n /**\n * @generated from field: int32 count = 2;\n */\n count: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint.\n * Use `create(GetNotificationStatsResponse_TimelinePointSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_TimelinePointSchema: GenMessage<GetNotificationStatsResponse_TimelinePoint> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51, 2);\n\n/**\n * @generated from message dashboard.notifications.v1.GetNotificationStatsResponse.Result\n */\nexport type GetNotificationStatsResponse_Result = Message<\"dashboard.notifications.v1.GetNotificationStatsResponse.Result\"> & {\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.StatusBreakdown status_breakdown = 1;\n */\n statusBreakdown?: GetNotificationStatsResponse_StatusBreakdown;\n\n /**\n * @generated from field: dashboard.notifications.v1.GetNotificationStatsResponse.ChannelBreakdown channel_breakdown = 2;\n */\n channelBreakdown?: GetNotificationStatsResponse_ChannelBreakdown;\n\n /**\n * @generated from field: repeated dashboard.notifications.v1.GetNotificationStatsResponse.TimelinePoint timeline = 3;\n */\n timeline: GetNotificationStatsResponse_TimelinePoint[];\n\n /**\n * @generated from field: int32 total_subscribers = 4;\n */\n totalSubscribers: number;\n};\n\n/**\n * Describes the message dashboard.notifications.v1.GetNotificationStatsResponse.Result.\n * Use `create(GetNotificationStatsResponse_ResultSchema)` to create a new message.\n */\nexport const GetNotificationStatsResponse_ResultSchema: GenMessage<GetNotificationStatsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_notifications, 51, 3);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationMessageStatus\n */\nexport enum NotificationMessageStatus {\n /**\n * @generated from enum value: DRAFT = 0;\n */\n DRAFT = 0,\n\n /**\n * @generated from enum value: PLANNED = 1;\n */\n PLANNED = 1,\n\n /**\n * @generated from enum value: IN_PROGRESS = 2;\n */\n IN_PROGRESS = 2,\n\n /**\n * @generated from enum value: SENT = 3;\n */\n SENT = 3,\n\n /**\n * @generated from enum value: ERROR = 4;\n */\n ERROR = 4,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationMessageStatus.\n */\nexport const NotificationMessageStatusSchema: GenEnum<NotificationMessageStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 0);\n\n/**\n * @generated from enum dashboard.notifications.v1.NotificationMessageJobStatus\n */\nexport enum NotificationMessageJobStatus {\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_TODO = 0;\n */\n TODO = 0,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_IN_PROGRESS = 1;\n */\n IN_PROGRESS = 1,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_SENT = 2;\n */\n SENT = 2,\n\n /**\n * @generated from enum value: NOTIFICATION_MESSAGE_JOB_STATUS_ERROR = 3;\n */\n ERROR = 3,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.NotificationMessageJobStatus.\n */\nexport const NotificationMessageJobStatusSchema: GenEnum<NotificationMessageJobStatus> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 1);\n\n/**\n * @generated from enum dashboard.notifications.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_NOT_FOUND = 2;\n */\n NOTIFICATION_SETTING_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_SETTING_FAILED = 3;\n */\n CREATE_NOTIFICATION_SETTING_FAILED = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_SETTING_FAILED = 4;\n */\n UPDATE_NOTIFICATION_SETTING_FAILED = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_SETTING_FAILED = 5;\n */\n DELETE_NOTIFICATION_SETTING_FAILED = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_NOT_FOUND = 6;\n */\n NOTIFICATION_GROUP_NOT_FOUND = 6,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUPS_NOT_FOUND = 7;\n */\n NOTIFICATION_GROUPS_NOT_FOUND = 7,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_GROUP_FAILED = 8;\n */\n CREATE_NOTIFICATION_GROUP_FAILED = 8,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_GROUP_FAILED = 9;\n */\n UPDATE_NOTIFICATION_GROUP_FAILED = 9,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_GROUP_FAILED = 10;\n */\n DELETE_NOTIFICATION_GROUP_FAILED = 10,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USER_NOT_FOUND = 11;\n */\n NOTIFICATION_USER_NOT_FOUND = 11,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USERS_NOT_FOUND = 12;\n */\n NOTIFICATION_USERS_NOT_FOUND = 12,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_USER_FAILED = 13;\n */\n CREATE_NOTIFICATION_USER_FAILED = 13,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_USER_FAILED = 14;\n */\n UPDATE_NOTIFICATION_USER_FAILED = 14,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_USER_FAILED = 15;\n */\n DELETE_NOTIFICATION_USER_FAILED = 15,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_USER_NOT_FOUND = 16;\n */\n NOTIFICATION_GROUP_USER_NOT_FOUND = 16,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_GROUP_USER_FAILED = 17;\n */\n CREATE_NOTIFICATION_GROUP_USER_FAILED = 17,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_GROUP_USER_FAILED = 18;\n */\n UPDATE_NOTIFICATION_GROUP_USER_FAILED = 18,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_GROUP_USER_FAILED = 19;\n */\n DELETE_NOTIFICATION_GROUP_USER_FAILED = 19,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_NOT_FOUND = 20;\n */\n NOTIFICATION_MESSAGE_NOT_FOUND = 20,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGES_NOT_FOUND = 21;\n */\n NOTIFICATION_MESSAGES_NOT_FOUND = 21,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_MESSAGE_FAILED = 22;\n */\n CREATE_NOTIFICATION_MESSAGE_FAILED = 22,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_MESSAGE_FAILED = 23;\n */\n UPDATE_NOTIFICATION_MESSAGE_FAILED = 23,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_MESSAGE_FAILED = 24;\n */\n DELETE_NOTIFICATION_MESSAGE_FAILED = 24,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_JOB_NOT_FOUND = 25;\n */\n NOTIFICATION_MESSAGE_JOB_NOT_FOUND = 25,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_MESSAGE_JOBS_NOT_FOUND = 26;\n */\n NOTIFICATION_MESSAGE_JOBS_NOT_FOUND = 26,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CREATE_NOTIFICATION_MESSAGE_JOB_FAILED = 27;\n */\n CREATE_NOTIFICATION_MESSAGE_JOB_FAILED = 27,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED = 28;\n */\n UPDATE_NOTIFICATION_MESSAGE_JOB_FAILED = 28,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_DELETE_NOTIFICATION_MESSAGE_JOB_FAILED = 29;\n */\n DELETE_NOTIFICATION_MESSAGE_JOB_FAILED = 29,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_ALREADY_EXIST = 30;\n */\n NOTIFICATION_SETTING_ALREADY_EXIST = 30,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN = 31;\n */\n NOTIFICATION_SETTING_SLUG_ALREADY_TAKEN = 31,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_USER_ALREADY_EXIST = 32;\n */\n NOTIFICATION_USER_ALREADY_EXIST = 32,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NOTIFICATION_GROUP_ALREADY_EXIST = 33;\n */\n NOTIFICATION_GROUP_ALREADY_EXIST = 33,\n}\n\n/**\n * Describes the enum dashboard.notifications.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_notifications, 2);\n\n/**\n * @generated from service dashboard.notifications.v1.NotificationsService\n */\nexport const NotificationsService: GenService<{\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationSetting\n */\n createNotificationSetting: {\n methodKind: \"unary\";\n input: typeof CreateNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationSetting\n */\n readNotificationSetting: {\n methodKind: \"unary\";\n input: typeof ReadNotificationSettingRequestSchema;\n output: typeof ReadNotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationSetting\n */\n updateNotificationSetting: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationSetting\n */\n deleteNotificationSetting: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationSettingRequestSchema;\n output: typeof NotificationSettingResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroup\n */\n createNotificationGroup: {\n methodKind: \"unary\";\n input: typeof CreateNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroups\n */\n readNotificationGroups: {\n methodKind: \"unary\";\n input: typeof ReadNotificationGroupsRequestSchema;\n output: typeof ReadNotificationGroupsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroup\n */\n updateNotificationGroup: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroup\n */\n deleteNotificationGroup: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationGroupRequestSchema;\n output: typeof NotificationGroupResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationUser\n */\n createNotificationUser: {\n methodKind: \"unary\";\n input: typeof CreateNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationUsers\n */\n readNotificationUsers: {\n methodKind: \"unary\";\n input: typeof ReadNotificationUsersRequestSchema;\n output: typeof ReadNotificationUsersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationUser\n */\n updateNotificationUser: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationUser\n */\n deleteNotificationUser: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationUserRequestSchema;\n output: typeof NotificationUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationGroupUser\n */\n createNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof CreateNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationGroupUsers\n */\n readNotificationGroupUsers: {\n methodKind: \"unary\";\n input: typeof ReadNotificationGroupUsersRequestsSchema;\n output: typeof ReadNotificationGroupUsersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationGroupUser\n */\n updateNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationGroupUser\n */\n deleteNotificationGroupUser: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationGroupUserRequestSchema;\n output: typeof NotificationGroupUserResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessage\n */\n createNotificationMessage: {\n methodKind: \"unary\";\n input: typeof CreateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessages\n */\n readNotificationMessages: {\n methodKind: \"unary\";\n input: typeof ReadNotificationMessagesRequestSchema;\n output: typeof ReadNotificationMessagesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetSentNotificationMessages\n */\n getSentNotificationMessages: {\n methodKind: \"unary\";\n input: typeof GetSentNotificationMessagesRequestSchema;\n output: typeof GetSentNotificationMessagesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessage\n */\n updateNotificationMessage: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessage\n */\n deleteNotificationMessage: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationMessageRequestSchema;\n output: typeof NotificationMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.CreateNotificationMessageJob\n */\n createNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof CreateNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationMessageJobs\n */\n readNotificationMessageJobs: {\n methodKind: \"unary\";\n input: typeof ReadNotificationMessageJobsRequestSchema;\n output: typeof ReadNotificationMessageJobsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateNotificationMessageJob\n */\n updateNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof UpdateNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.DeleteNotificationMessageJob\n */\n deleteNotificationMessageJob: {\n methodKind: \"unary\";\n input: typeof DeleteNotificationMessageJobRequestSchema;\n output: typeof NotificationMessageJobResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.ReadNotificationProducts\n */\n readNotificationProducts: {\n methodKind: \"unary\";\n input: typeof ReadNotificationProductsRequestSchema;\n output: typeof SearchProductsResponseSchema;\n },\n /**\n * Public endpoints\n *\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationUserSettings\n */\n getNotificationUserSettings: {\n methodKind: \"unary\";\n input: typeof GetNotificationUserSettingsRequestSchema;\n output: typeof GetNotificationUserSettingsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.VerifyUserEmail\n */\n verifyUserEmail: {\n methodKind: \"unary\";\n input: typeof VerifyUserEmailRequestSchema;\n output: typeof VerifyUserEmailResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetUserGroups\n */\n getUserGroups: {\n methodKind: \"unary\";\n input: typeof GetUserGroupsRequestSchema;\n output: typeof GetUserGroupsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.UpdateUserGroups\n */\n updateUserGroups: {\n methodKind: \"unary\";\n input: typeof UpdateUserGroupsRequestSchema;\n output: typeof EmptySchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetProjectedRecipientCount\n */\n getProjectedRecipientCount: {\n methodKind: \"unary\";\n input: typeof GetProjectedRecipientCountRequestSchema;\n output: typeof GetProjectedRecipientCountResponseSchema;\n },\n /**\n * @generated from rpc dashboard.notifications.v1.NotificationsService.GetNotificationStats\n */\n getNotificationStats: {\n methodKind: \"unary\";\n input: typeof GetNotificationStatsRequestSchema;\n output: typeof GetNotificationStatsResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_notifications, 0);\n\n","// @generated by protoc-gen-es v2.11.0 with parameter \"target=ts\"\n// @generated from file dashboard/v1/product.proto (package dashboard.product.v1, syntax proto3)\n/* eslint-disable */\n\nimport type { GenEnum, GenFile, GenMessage, GenService } from \"@bufbuild/protobuf/codegenv2\";\nimport { enumDesc, fileDesc, messageDesc, serviceDesc } from \"@bufbuild/protobuf/codegenv2\";\nimport type { Empty, Timestamp } from \"@bufbuild/protobuf/wkt\";\nimport { file_google_protobuf_empty, file_google_protobuf_timestamp } from \"@bufbuild/protobuf/wkt\";\nimport type { Message } from \"@bufbuild/protobuf\";\n\n/**\n * Describes the file dashboard/v1/product.proto.\n */\nexport const file_dashboard_v1_product: GenFile = /*@__PURE__*/\n fileDesc(\"ChpkYXNoYm9hcmQvdjEvcHJvZHVjdC5wcm90bxIUZGFzaGJvYXJkLnByb2R1Y3QudjEiNAoeR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkibAobU2V0R3Vlc3RDYXRhbG9nRW50cnlSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMcHJvZHVjdF90eXBlGAIgASgJEg8KB2VuYWJsZWQYAyABKAgSEgoKc29ydF9vcmRlchgEIAEoBSL3AQofR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRISCgpjYW5fbWFuYWdlGAEgASgIEh0KFWd1ZXN0X2NhdGFsb2dfZW5hYmxlZBgCIAEoCBI4CgdlbnRyaWVzGAMgAygLMicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR3Vlc3RDYXRhbG9nRW50cnkSHQoVYXZhaWxhYmxlX3Byb2R1Y3RfaWRzGAQgAygJEkgKD3Byb2R1Y3Rfb3B0aW9ucxgFIAMoCzIvLmRhc2hib2FyZC5wcm9kdWN0LnYxLkd1ZXN0Q2F0YWxvZ1Byb2R1Y3RPcHRpb24iRQoZR3Vlc3RDYXRhbG9nUHJvZHVjdE9wdGlvbhISCgpwcm9kdWN0X2lkGAEgASgJEhQKDGRpc3BsYXlfbmFtZRgCIAEoCSJ+ChFHdWVzdENhdGFsb2dFbnRyeRISCgpwcm9kdWN0X2lkGAEgASgJEhQKDHByb2R1Y3RfdHlwZRgCIAEoCRIPCgdlbmFibGVkGAMgASgIEhIKCnNvcnRfb3JkZXIYBCABKAUSGgoSZWxpZ2liaWxpdHlfcmVhc29uGAUgASgJIisKFUFyY2hpdmVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIi0KF0R1cGxpY2F0ZVByb2R1Y3RSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiOQoYRHVwbGljYXRlUHJvZHVjdFJlc3BvbnNlEh0KFWR1cGxpY2F0ZWRfcHJvZHVjdF9pZBgBIAEoCSI3CiBFeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBITCgtwcm9kdWN0X2lkcxgBIAMoCSK6AQohRXhjaGFuZ2VQcm9kdWN0SURzVG9OYW1lc1Jlc3BvbnNlEmAKDXByb2R1Y3RfbmFtZXMYASADKAsySS5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVzcG9uc2UuUHJvZHVjdE5hbWVzRW50cnkaMwoRUHJvZHVjdE5hbWVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASJ5ChtHZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRITCgZzZWFyY2gYAiABKAlIAIgBARIXCgp2YXJpYW50X2lkGAMgASgJSAGIAQFCCQoHX3NlYXJjaEINCgtfdmFyaWFudF9pZCLRAQocR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZRJJCgdtZW1iZXJzGAEgAygLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0RmlsZUFjY2Vzc01lbWJlcnNSZXNwb25zZS5WYWx1ZRpmCgVWYWx1ZRIKCgJpZBgBIAEoCRINCgVlbWFpbBgCIAEoCRIzCgpjcmVhdGVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBQg0KC19jcmVhdGVkX2F0ImQKF0dpdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoKdmFyaWFudF9pZBgCIAEoCUgAiAEBEg0KBWVtYWlsGAMgASgJQg0KC192YXJpYW50X2lkIisKGEdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIicKGVJlbW92ZUFjY2Vzc1RvRmlsZVJlcXVlc3QSCgoCaWQYASABKAkiLQoaUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCJkCh9TZW5kVGVzdEVtYWlsV2l0aE1lc3NhZ2VSZXF1ZXN0Eg0KBWVtYWlsGAEgASgJEhQKDGh0bWxfbWVzc2FnZRgCIAEoCRISCgV0aXRsZRgDIAEoCUgAiAEBQggKBl90aXRsZSIvChlHZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkimQEKGkdldFByb2R1Y3RWYXJpYW50c1Jlc3BvbnNlElAKCHZhcmlhbnRzGAEgAygLMj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2UuU2luZ2xlVmFyaWFudBopCg1TaW5nbGVWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkigwEKKFVwZGF0ZVByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhQKDGh0bWxfbWVzc2FnZRgDIAEoCRISCgV0aXRsZRgEIAEoCUgAiAEBQggKBl90aXRsZSI7CiVHZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiuwIKJkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAadQoHU3VjY2VzcxIUCgdtZXNzYWdlGAEgASgJSACIAQESGQoMaHRtbF9tZXNzYWdlGAIgASgJSAGIAQESEgoFdGl0bGUYAyABKAlIAogBAUIKCghfbWVzc2FnZUIPCg1faHRtbF9tZXNzYWdlQggKBl90aXRsZUIICgZyZXN1bHQiMwodUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSJlCitVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSIgoac2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2UYAiABKAgiVgoqVXBkYXRlUHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFAoMYXVkaW9ib29rX2lkGAIgASgJIj4KKEdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSL5AQopR2V0UHJvZHVjdFNlbmRUaWNrZXRBZnRlclB1cmNoYXNlUmVzcG9uc2USWgoHc3VjY2VzcxgBIAEoCzJHLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlc3BvbnNlLlN1Y2Nlc3NIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABotCgdTdWNjZXNzEiIKGnNlbmRfdGlja2V0X2FmdGVyX3B1cmNoYXNlGAEgASgIQggKBnJlc3VsdCI9CidHZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKfAgooR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZRJZCgdzdWNjZXNzGAEgASgLMkYuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2VSZXNwb25zZS5TdWNjZXNzSAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaVQoHU3VjY2VzcxIUCgxhdWRpb2Jvb2tfaWQYASABKAkSFwoPYXVkaW9ib29rX3RpdGxlGAIgASgJEhsKE2F1ZGlvYm9va19pbWFnZV91cmwYAyABKAlCCAoGcmVzdWx0IjcKFVNlYXJjaFByb2R1Y3RzUmVxdWVzdBITCgZzZWFyY2gYASABKAlIAIgBAUIJCgdfc2VhcmNoIswCChZTZWFyY2hQcm9kdWN0c1Jlc3BvbnNlEkYKB3N1Y2Nlc3MYASABKAsyMy5kYXNoYm9hcmQucHJvZHVjdC52MS5TZWFyY2hQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGk8KDVNpbmdsZVByb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRIWCglpbWFnZV91cmwYAyABKAlIAIgBAUIMCgpfaW1hZ2VfdXJsGlYKBlJlc3VsdBJMCghwcm9kdWN0cxgBIAMoCzI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2UuU2luZ2xlUHJvZHVjdEIICgZyZXN1bHQiNQofR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJImAKIEdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEjwKCGFydGljbGVzGAEgAygLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiiAEKFFByb2R1Y3RCb3VnaHRBcnRpY2xlEgoKAmlkGAEgASgJEhIKCnByb2R1Y3RfaWQYAiABKAkSFAoHY29udGVudBgDIAEoCUgAiAEBEi4KCmNyZWF0ZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQgoKCF9jb250ZW50ImAKIVVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlUmVxdWVzdBI7CgdhcnRpY2xlGAEgASgLMiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUiJwoRR2V0UHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSKBAgoSR2V0UHJvZHVjdFJlc3BvbnNlEjIKB3Byb2R1Y3QYASABKAsyHy5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjJIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABJGCgpzZWxsX3N0YXRzGAMgAygLMjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlc3BvbnNlLlNlbGxTdGF0cxosCglTZWxsU3RhdHMSEQoJcHJvZHVjdElEGAEgASgJEgwKBHNvbGQYAiABKAVCCAoGcmVzdWx0InIKHENyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlcXVlc3QSMAoHcHJvZHVjdBgBIAEoCzIfLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMhIgChhpc19kZXNjcmlwdGlvbl9kaWZmZXJlbnQYAiABKAgiTQoeVXBkYXRlUHJvZHVjdFVuaXF1ZVNsdWdSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkSFwoPbmV3X3VuaXF1ZV9zbHVnGAIgASgJIqULCglQcm9kdWN0VjISDwoCaWQYASABKAlIAIgBARITCgt1bmlxdWVfc2x1ZxgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEjYKBnN0YXR1cxgEIAEoDjImLmRhc2hib2FyZC5wcm9kdWN0LnYxLlByb2R1Y3RWMi5TdGF0dXMSGQoMaXNfcmVjdXJyaW5nGAUgASgISAGIAQESNwoJcmVjdXJyaW5nGAYgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSAKIAQESDAoEbmFtZRgHIAEoCRIYCgtkZXNjcmlwdGlvbhgIIAEoCUgDiAEBEh0KEGh0bWxfZGVzY3JpcHRpb24YCSABKAlIBIgBARIeChFzaG9ydF9kZXNjcmlwdGlvbhgKIAEoCUgFiAEBEhkKDHByaWNlX2Ftb3VudBgLIAEoBUgGiAEBEhsKDnByaWNlX2N1cnJlbmN5GAwgASgJSAeIAQESEAoDdGF4GA0gASgCSAiIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GA4gASgFSAmIAQESPwoIZmVhdHVyZXMYDyADKAsyLS5kYXNoYm9hcmQucHJvZHVjdC52MS5Qcm9kdWN0VjIuRmVhdHVyZXNFbnRyeRIOCgZpbWFnZXMYECADKAkSHAoPdGh1bWJuYWlsX2ltYWdlGBEgASgJSAqIAQESFwoKbWFpbl9pbWFnZRgSIAEoCUgLiAEBEi8KCHZhcmlhbnRzGBMgAygLMh0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudBInChpzZW5kX3RpY2tldF9hZnRlcl9wdXJjaGFzZRgUIAEoCEgMiAEBEicKGmlzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0GBUgASgISA2IAQESGwoOaXNfZGVsaXZlcmFibGUYGCABKAhIDogBARIhChRmb3JjZV9tYW51YWxfcGF5bWVudBgdIAEoCEgPiAEBEhkKDHdlaWdodF9ncmFtcxgeIAEoBUgQiAEBEh4KEXdpZHRoX21pbGxpbWV0ZXJzGB8gASgFSBGIAQESHwoSaGVpZ2h0X21pbGxpbWV0ZXJzGCAgASgFSBKIAQESEgoKY3JlYXRlZF9hdBgZIAEoAxISCgp1cGRhdGVkX2F0GBogASgDEhcKCmRlbGV0ZWRfYXQYGyABKANIE4gBARIVCghhcmNoaXZlZBgcIAEoCEgUiAEBEhAKCHJldmlzaW9uGCEgASgFGi8KDUZlYXR1cmVzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIzCgZTdGF0dXMSCQoFRFJBRlQQABIPCgtVTlBVQkxJU0hFRBABEg0KCVBVQkxJU0hFRBACQgUKA19pZEIPCg1faXNfcmVjdXJyaW5nQgwKCl9yZWN1cnJpbmdCDgoMX2Rlc2NyaXB0aW9uQhMKEV9odG1sX2Rlc2NyaXB0aW9uQhQKEl9zaG9ydF9kZXNjcmlwdGlvbkIPCg1fcHJpY2VfYW1vdW50QhEKD19wcmljZV9jdXJyZW5jeUIGCgRfdGF4QhUKE19hdmFpbGFibGVfcXVhbnRpdHlCEgoQX3RodW1ibmFpbF9pbWFnZUINCgtfbWFpbl9pbWFnZUIdChtfc2VuZF90aWNrZXRfYWZ0ZXJfcHVyY2hhc2VCHQobX2lzX3Byb2R1Y3RfdmlzaWJsZV9vbl9saXN0QhEKD19pc19kZWxpdmVyYWJsZUIXChVfZm9yY2VfbWFudWFsX3BheW1lbnRCDwoNX3dlaWdodF9ncmFtc0IUChJfd2lkdGhfbWlsbGltZXRlcnNCFQoTX2hlaWdodF9taWxsaW1ldGVyc0INCgtfZGVsZXRlZF9hdEILCglfYXJjaGl2ZWQiuwMKCVJlY3VycmluZxI6Cg1iaWxsaW5nUGVyaW9kGAEgASgOMiMuZGFzaGJvYXJkLnByb2R1Y3QudjEuQmlsbGluZ1BlcmlvZBIXCgp0cmlhbF9kYXlzGAIgASgFSACIAQESHwoSbnVtYmVyX29mX3BheW1lbnRzGAMgASgFSAGIAQESMQokY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzGAQgASgISAKIAQESNAoncmVtb3ZlX2FjY2Vzc19mb3JfY2FuY2VsbGVkX3N1YnNjcmliZXJzGAUgASgISAOIAQESLgohc2hvdWxkX3NlbmRfdHJpYWxfcGVyaW9kX3JlbWluZGVyGAYgASgISASIAQFCDQoLX3RyaWFsX2RheXNCFQoTX251bWJlcl9vZl9wYXltZW50c0InCiVfY2hhbmdlX2Ftb3VudF9mb3JfY3VycmVudFN1YnNjcmliZXJzQioKKF9yZW1vdmVfYWNjZXNzX2Zvcl9jYW5jZWxsZWRfc3Vic2NyaWJlcnNCJAoiX3Nob3VsZF9zZW5kX3RyaWFsX3BlcmlvZF9yZW1pbmRlciKrAgoPVmFyaWFudERpc2NvdW50EjgKBHR5cGUYASABKA4yKi5kYXNoYm9hcmQucHJvZHVjdC52MS5WYXJpYW50RGlzY291bnQuVHlwZRIOCgZhbW91bnQYAiABKAUSMQoIZW5kX2RhdGUYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESDwoCaWQYBCABKAlIAYgBARIPCgdlbmFibGVkGAUgASgIEjMKCnN0YXJ0X2RhdGUYBiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAKIAQEiIQoEVHlwZRIJCgVGSVhFRBAAEg4KClBFUkNFTlRBR0UQAUILCglfZW5kX2RhdGVCBQoDX2lkQg0KC19zdGFydF9kYXRlIt0GCgdWYXJpYW50EgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBARIWCglpbWFnZV91cmwYBCABKAlIAYgBARIUCgxwcmljZV9hbW91bnQYBSABKAUSFgoOcHJpY2VfY3VycmVuY3kYBiABKAkSEAoDdGF4GAcgASgFSAKIAQESHwoSYXZhaWxhYmxlX3F1YW50aXR5GAggASgFSAOIAQESNwoJcmVjdXJyaW5nGAkgASgLMh8uZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVjdXJyaW5nSASIAQESGwoOaXNfZGVsaXZlcmFibGUYCiABKAhIBYgBARIhChRsb3dlc3RfcHJpY2VfMzBfZGF5cxgLIAEoBUgGiAEBEjwKCGRpc2NvdW50GAwgASgLMiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuVmFyaWFudERpc2NvdW50SAeIAQESPgoVZXN0aW1hdGVkX2RlbGl2ZXJ5X2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgIiAEBEhwKFHJlZ3VsYXJfcHJpY2VfYW1vdW50GA4gASgFEh4KFmVmZmVjdGl2ZV9wcmljZV9hbW91bnQYDyABKAUSIwoWcmVmZXJlbmNlX3ByaWNlX2Ftb3VudBgQIAEoBUgJiAEBEiMKG3JlZmVyZW5jZV9oaXN0b3J5X2F2YWlsYWJsZRgRIAEoCBIVCg1wcmljZV92ZXJzaW9uGBIgASgDEj0KFG5leHRfcHJpY2VfY2hhbmdlX2F0GBMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgKiAEBQg4KDF9kZXNjcmlwdGlvbkIMCgpfaW1hZ2VfdXJsQgYKBF90YXhCFQoTX2F2YWlsYWJsZV9xdWFudGl0eUIMCgpfcmVjdXJyaW5nQhEKD19pc19kZWxpdmVyYWJsZUIXChVfbG93ZXN0X3ByaWNlXzMwX2RheXNCCwoJX2Rpc2NvdW50QhgKFl9lc3RpbWF0ZWRfZGVsaXZlcnlfYXRCGQoXX3JlZmVyZW5jZV9wcmljZV9hbW91bnRCFwoVX25leHRfcHJpY2VfY2hhbmdlX2F0IngKHUNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEhQKCnByb2R1Y3RfaWQYASABKAlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQifAoMQm9vbFJlc3BvbnNlEikKB3N1Y2Nlc3MYASABKAsyFi5nb29nbGUucHJvdG9idWYuRW1wdHlIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIAEIICgZyZXN1bHQiIgoPT3BlcmF0aW9uUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgiUAoSR2V0UHJvZHVjdHNSZXF1ZXN0EhMKBnNlYXJjaBgBIAEoCUgAiAEBEhEKBHR5cGUYAiABKAlIAYgBAUIJCgdfc2VhcmNoQgcKBV90eXBlIrwBChNHZXRQcm9kdWN0c1Jlc3BvbnNlEkMKB3N1Y2Nlc3MYASABKAsyMC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGh0KBlJlc3VsdBITCgtwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQilgEKF0dldFByb2R1Y3RzQnlJZHNSZXF1ZXN0EgsKA2lkcxgBIAMoCRIVCghjdXJyZW5jeRgCIAEoCUgAiAEBEhEKBGxhbmcYAyABKAlIAYgBARIbCg5ncm91cF92YXJpYW50cxgEIAEoCEgCiAEBQgsKCV9jdXJyZW5jeUIHCgVfbGFuZ0IRCg9fZ3JvdXBfdmFyaWFudHMiwQIKGEdldFByb2R1Y3RzQnlJZHNSZXNwb25zZRJICgdzdWNjZXNzGAEgASgLMjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGkQKB1Byb2R1Y3QSCgoCaWQYASABKAkSDAoEbmFtZRgCIAEoCRINCgVwcmljZRgDIAEoBRIQCghjdXJyZW5jeRgEIAEoCRpSCgZSZXN1bHQSSAoIcHJvZHVjdHMYASADKAsyNi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0c0J5SWRzUmVzcG9uc2UuUHJvZHVjdEIICgZyZXN1bHQi3QEKFUdldFByb2R1Y3RHcmlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEhMKBnNlYXJjaBgCIAEoCUgAiAEBEhUKCGN1cnJlbmN5GAMgASgJSAGIAQESGwoOZ3JvdXBfdmFyaWFudHMYBCABKAhIAogBARITCgZvZmZzZXQYBSABKAVIA4gBARISCgVsaW1pdBgGIAEoBUgEiAEBQgkKB19zZWFyY2hCCwoJX2N1cnJlbmN5QhEKD19ncm91cF92YXJpYW50c0IJCgdfb2Zmc2V0QggKBl9saW1pdCLCAQoWR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJGCgdzdWNjZXNzGAEgASgLMjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZS5SZXN1bHRIABI3CgdmYWlsdXJlGAIgASgOMiQuZGFzaGJvYXJkLnByb2R1Y3QudjEuRmFpbHVyZU1lc3NhZ2VIABodCgZSZXN1bHQSEwoLcHJvZHVjdF9pZHMYASADKAlCCAoGcmVzdWx0ItYBChpHZXRNYWluUGFnZVByb2R1Y3RzUmVxdWVzdBIXCgpwcm9qZWN0X2lkGAEgASgJSACIAQESEwoGc2VhcmNoGAIgASgJSAGIAQESEgoFbGltaXQYAyABKAVIAogBARITCgZvZmZzZXQYBCABKAVIA4gBARIdChBpbmNsdWRlX2FyY2hpdmVkGAUgASgISASIAQFCDQoLX3Byb2plY3RfaWRCCQoHX3NlYXJjaEIICgZfbGltaXRCCQoHX29mZnNldEITChFfaW5jbHVkZV9hcmNoaXZlZCL2AQobR2V0TWFpblBhZ2VQcm9kdWN0c1Jlc3BvbnNlEksKB3N1Y2Nlc3MYASABKAsyOC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaRwoGUmVzdWx0EhMKC3Byb2R1Y3RfaWRzGAEgAygJEhgKC3RvdGFsX2NvdW50GAIgASgFSACIAQFCDgoMX3RvdGFsX2NvdW50QggKBnJlc3VsdCI6CiNHZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBITCgt1bmlxdWVfc2x1ZxgBIAEoCSKXBAokR2V0UHVibGljUHJvZHVjdEJ5VW5pcXVlU2x1Z1Jlc3BvbnNlElQKB3N1Y2Nlc3MYASABKAsyQS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAa1QIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARISCgpwcm9qZWN0X2lkGAMgASgJEgoKAmlkGAQgASgJEgwKBG5hbWUYBSABKAkSHgoRc2hvcnRfZGVzY3JpcHRpb24YBiABKAlIAYgBARIZCgxwcmljZV9hbW91bnQYByABKAVIAogBARIbCg5wcmljZV9jdXJyZW5jeRgIIAEoCUgDiAEBEhcKCm1haW5faW1hZ2UYCSABKAlIBIgBARIcCg90aHVtYm5haWxfaW1hZ2UYCiABKAlIBYgBAUIKCghfbWVzc2FnZUIUChJfc2hvcnRfZGVzY3JpcHRpb25CDwoNX3ByaWNlX2Ftb3VudEIRCg9fcHJpY2VfY3VycmVuY3lCDQoLX21haW5faW1hZ2VCEgoQX3RodW1ibmFpbF9pbWFnZUIICgZyZXN1bHQiYQoaR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QSEgoKcHJvamVjdF9pZBgBIAEoCRITCgtwcm9kdWN0X2lkcxgCIAMoCRIaChJjb250YWluc19yZWN1cnJpbmcYAyABKAgi5QIKG0dldFB1YmxpY0FncmVlbWVudHNSZXNwb25zZRJLCgdzdWNjZXNzGAEgASgLMjguZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGisKCUFncmVlbWVudBIMCgRuYW1lGAEgASgJEhAKCHJlcXVpcmVkGAIgASgIGogBCgZSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIUCgdtZXNzYWdlGAIgASgJSACIAQESSwoGcmVzdWx0GAMgAygLMjsuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1Jlc3BvbnNlLkFncmVlbWVudEIKCghfbWVzc2FnZUIICgZyZXN1bHQiPAomR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCSLlAQonR2V0RVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlc3BvbnNlElcKB3N1Y2Nlc3MYASABKAsyRC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVzcG9uc2UuUmVzdWx0SAASNwoHZmFpbHVyZRgCIAEoDjIkLmRhc2hib2FyZC5wcm9kdWN0LnYxLkZhaWx1cmVNZXNzYWdlSAAaHgoGUmVzdWx0EhQKDGVwcm9kdWN0X2lkcxgBIAMoCUIICgZyZXN1bHQiVQopVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdFJlcXVlc3QSEgoKcHJvZHVjdF9pZBgBIAEoCRIUCgxlcHJvZHVjdF9pZHMYAiADKAkiOgokR2V0TGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0EhIKCnByb2R1Y3RfaWQYASABKAkiUAoPQWdyZWVtZW50T3B0aW9uEgwKBG5hbWUYASABKAkSEwoLaXNfcmVxdWlyZWQYAiABKAgSEQoEbGluaxgDIAEoCUgAiAEBQgcKBV9saW5rIrUCCiVHZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlElUKB3N1Y2Nlc3MYASABKAsyQi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50c1Jlc3BvbnNlLlJlc3VsdEgAEjcKB2ZhaWx1cmUYAiABKA4yJC5kYXNoYm9hcmQucHJvZHVjdC52MS5GYWlsdXJlTWVzc2FnZUgAGnIKBlJlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhQKB21lc3NhZ2UYAiABKAlIAIgBARI1CgZyZXN1bHQYAyADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb25CCgoIX21lc3NhZ2VCCAoGcmVzdWx0IngKJ1VwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJEjkKCmFncmVlbWVudHMYAiADKAsyJS5kYXNoYm9hcmQucHJvZHVjdC52MS5BZ3JlZW1lbnRPcHRpb24iJAoUQ3JlYXRlUHJvZHVjdFJlcXVlc3QSDAoEbmFtZRgBIAEoCSIqChREZWxldGVQcm9kdWN0UmVxdWVzdBISCgpwcm9kdWN0X2lkGAEgASgJIjcKFUdldFByb2R1Y3RCeUlkUmVxdWVzdBISCgpwcm9qZWN0X2lkGAEgASgJEgoKAmlkGAIgASgJKr0BCg1CaWxsaW5nUGVyaW9kEhgKFEJJTExJTkdfUEVSSU9EX0RBSUxZEAASGQoVQklMTElOR19QRVJJT0RfV0VFS0xZEAESGgoWQklMTElOR19QRVJJT0RfTU9OVEhMWRACEhwKGEJJTExJTkdfUEVSSU9EX1FVQVJURVJMWRADEiAKHEJJTExJTkdfUEVSSU9EX1NFTUlfQU5OVUFMTFkQBBIbChdCSUxMSU5HX1BFUklPRF9BTk5VQUxMWRAFKpUCCg5GYWlsdXJlTWVzc2FnZRIbChdGQUlMVVJFX01FU1NBR0VfVU5LTk9XThAAEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9KRUNUX05PVF9GT1VORBABEiUKIUZBSUxVUkVfTUVTU0FHRV9QUk9EVUNUX05PVF9GT1VORBACEiYKIkZBSUxVUkVfTUVTU0FHRV9JTlZBTElEX1BST0RVQ1RfSUQQAxImCiJGQUlMVVJFX01FU1NBR0VfU0xVR19BTFJFQURZX1RBS0VOEAQSKQolRkFJTFVSRV9NRVNTQUdFX0NBTk5PVF9DUkVBVEVfUFJPRFVDVBAFEh0KGUZBSUxVUkVfTUVTU0FHRV9OT19BQ0NFU1MQBjLXJQoNUHJvZHVjdFJvdXRlchKAAQoVQ3JlYXRlT3JVcGRhdGVQcm9kdWN0EjIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQ3JlYXRlT3JVcGRhdGVQcm9kdWN0UmVxdWVzdBozLmRhc2hib2FyZC5wcm9kdWN0LnYxLkNyZWF0ZU9yVXBkYXRlUHJvZHVjdFJlc3BvbnNlEnEKEER1cGxpY2F0ZVByb2R1Y3QSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5EdXBsaWNhdGVQcm9kdWN0UmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkR1cGxpY2F0ZVByb2R1Y3RSZXNwb25zZRJzChdVcGRhdGVQcm9kdWN0VW5pcXVlU2x1ZxI0LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RVbmlxdWVTbHVnUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJfCgpHZXRQcm9kdWN0EicuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2USpAEKIUdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZRI+LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RTZW5kVGlja2V0QWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXNwb25zZRKhAQogR2V0UHJvZHVjdEF1ZGlvYm9va0FmdGVyUHVyY2hhc2USPS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlcXVlc3QaPi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZVJlc3BvbnNlEo0BCiRVcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2USQS5kYXNoYm9hcmQucHJvZHVjdC52MS5VcGRhdGVQcm9kdWN0U2VuZFRpY2tldEFmdGVyUHVyY2hhc2VSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEosBCiNVcGRhdGVQcm9kdWN0QXVkaW9ib29rQWZ0ZXJQdXJjaGFzZRJALmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZVByb2R1Y3RBdWRpb2Jvb2tBZnRlclB1cmNoYXNlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJxChZQdWJsaXNoUHJvZHVjdElmTmVlZGVkEjMuZGFzaGJvYXJkLnByb2R1Y3QudjEuUHVibGlzaFByb2R1Y3RJZk5lZWRlZFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USmwEKHkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZRI7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RBZnRlclB1cmNoYXNlTWVzc2FnZVJlcXVlc3QaPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QWZ0ZXJQdXJjaGFzZU1lc3NhZ2VSZXNwb25zZRKHAQohVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlEj4uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEFmdGVyUHVyY2hhc2VNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJ3ChJHZXRQcm9kdWN0VmFyaWFudHMSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0VmFyaWFudHNSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdFZhcmlhbnRzUmVzcG9uc2USdQoYU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuU2VuZFRlc3RFbWFpbFdpdGhNZXNzYWdlUmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJrCg5TZWFyY2hQcm9kdWN0cxIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVxdWVzdBosLmRhc2hib2FyZC5wcm9kdWN0LnYxLlNlYXJjaFByb2R1Y3RzUmVzcG9uc2USjAEKGUV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXMSNi5kYXNoYm9hcmQucHJvZHVjdC52MS5FeGNoYW5nZVByb2R1Y3RJRHNUb05hbWVzUmVxdWVzdBo3LmRhc2hib2FyZC5wcm9kdWN0LnYxLkV4Y2hhbmdlUHJvZHVjdElEc1RvTmFtZXNSZXNwb25zZRKJAQoYR2V0UHJvZHVjdEJvdWdodEFydGljbGVzEjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEJvdWdodEFydGljbGVzUmVxdWVzdBo2LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RCb3VnaHRBcnRpY2xlc1Jlc3BvbnNlEnkKGlVwZGF0ZVByb2R1Y3RCb3VnaHRBcnRpY2xlEjcuZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlUHJvZHVjdEJvdWdodEFydGljbGVSZXF1ZXN0GiIuZGFzaGJvYXJkLnByb2R1Y3QudjEuQm9vbFJlc3BvbnNlEmkKF0FkZFByb2R1Y3RCb3VnaHRBcnRpY2xlEiouZGFzaGJvYXJkLnByb2R1Y3QudjEuUHJvZHVjdEJvdWdodEFydGljbGUaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USfQoUR2V0RmlsZUFjY2Vzc01lbWJlcnMSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1JlcXVlc3QaMi5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRGaWxlQWNjZXNzTWVtYmVyc1Jlc3BvbnNlEnEKEEdpdmVBY2Nlc3NUb0ZpbGUSLS5kYXNoYm9hcmQucHJvZHVjdC52MS5HaXZlQWNjZXNzVG9GaWxlUmVxdWVzdBouLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdpdmVBY2Nlc3NUb0ZpbGVSZXNwb25zZRJ3ChJSZW1vdmVBY2Nlc3NUb0ZpbGUSLy5kYXNoYm9hcmQucHJvZHVjdC52MS5SZW1vdmVBY2Nlc3NUb0ZpbGVSZXF1ZXN0GjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuUmVtb3ZlQWNjZXNzVG9GaWxlUmVzcG9uc2USYQoOQXJjaGl2ZVByb2R1Y3QSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5BcmNoaXZlUHJvZHVjdFJlcXVlc3QaIi5kYXNoYm9hcmQucHJvZHVjdC52MS5Cb29sUmVzcG9uc2USYwoQVW5hcmNoaXZlUHJvZHVjdBIrLmRhc2hib2FyZC5wcm9kdWN0LnYxLkFyY2hpdmVQcm9kdWN0UmVxdWVzdBoiLmRhc2hib2FyZC5wcm9kdWN0LnYxLkJvb2xSZXNwb25zZRJiCgtHZXRQcm9kdWN0cxIoLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVxdWVzdBopLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzUmVzcG9uc2UScQoQR2V0UHJvZHVjdHNCeUlkcxItLmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFByb2R1Y3RzQnlJZHNSZXF1ZXN0Gi4uZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdHNCeUlkc1Jlc3BvbnNlEmsKDkdldFByb2R1Y3RHcmlkEisuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXF1ZXN0GiwuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHJvZHVjdEdyaWRSZXNwb25zZRJ6ChNHZXRNYWluUGFnZVByb2R1Y3RzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0TWFpblBhZ2VQcm9kdWN0c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRNYWluUGFnZVByb2R1Y3RzUmVzcG9uc2USlQEKHEdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWcSOS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNQcm9kdWN0QnlVbmlxdWVTbHVnUmVxdWVzdBo6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldFB1YmxpY1Byb2R1Y3RCeVVuaXF1ZVNsdWdSZXNwb25zZRJ6ChNHZXRQdWJsaWNBZ3JlZW1lbnRzEjAuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0UHVibGljQWdyZWVtZW50c1JlcXVlc3QaMS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQdWJsaWNBZ3JlZW1lbnRzUmVzcG9uc2USngEKH0dldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3QSPC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRFUHJvZHVjdHNBZGRlZEZvclRoaXNQcm9kdWN0UmVxdWVzdBo9LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldEVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXNwb25zZRKMAQoiVXBkYXRlRVByb2R1Y3RzQWRkZWRGb3JUaGlzUHJvZHVjdBI/LmRhc2hib2FyZC5wcm9kdWN0LnYxLlVwZGF0ZUVQcm9kdWN0c0FkZGVkRm9yVGhpc1Byb2R1Y3RSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EpgBCh1HZXRMaXN0T2ZBZGRpdGlvbmFsQWdyZWVtZW50cxI6LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVxdWVzdBo7LmRhc2hib2FyZC5wcm9kdWN0LnYxLkdldExpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzUmVzcG9uc2USiAEKIFVwZGF0ZUxpc3RPZkFkZGl0aW9uYWxBZ3JlZW1lbnRzEj0uZGFzaGJvYXJkLnByb2R1Y3QudjEuVXBkYXRlTGlzdE9mQWRkaXRpb25hbEFncmVlbWVudHNSZXF1ZXN0GiUuZGFzaGJvYXJkLnByb2R1Y3QudjEuT3BlcmF0aW9uUmVzdWx0EmIKDUNyZWF0ZVByb2R1Y3QSKi5kYXNoYm9hcmQucHJvZHVjdC52MS5DcmVhdGVQcm9kdWN0UmVxdWVzdBolLmRhc2hib2FyZC5wcm9kdWN0LnYxLk9wZXJhdGlvblJlc3VsdBJiCg1EZWxldGVQcm9kdWN0EiouZGFzaGJvYXJkLnByb2R1Y3QudjEuRGVsZXRlUHJvZHVjdFJlcXVlc3QaJS5kYXNoYm9hcmQucHJvZHVjdC52MS5PcGVyYXRpb25SZXN1bHQSZwoOR2V0UHJvZHVjdEJ5SWQSKy5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0QnlJZFJlcXVlc3QaKC5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRQcm9kdWN0UmVzcG9uc2UShgEKF0dldEd1ZXN0Q2F0YWxvZ1NldHRpbmdzEjQuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXF1ZXN0GjUuZGFzaGJvYXJkLnByb2R1Y3QudjEuR2V0R3Vlc3RDYXRhbG9nU2V0dGluZ3NSZXNwb25zZRKAAQoUU2V0R3Vlc3RDYXRhbG9nRW50cnkSMS5kYXNoYm9hcmQucHJvZHVjdC52MS5TZXRHdWVzdENhdGFsb2dFbnRyeVJlcXVlc3QaNS5kYXNoYm9hcmQucHJvZHVjdC52MS5HZXRHdWVzdENhdGFsb2dTZXR0aW5nc1Jlc3BvbnNlYgZwcm90bzM\", [file_google_protobuf_empty, file_google_protobuf_timestamp]);\n\n/**\n * @generated from message dashboard.product.v1.GetGuestCatalogSettingsRequest\n */\nexport type GetGuestCatalogSettingsRequest = Message<\"dashboard.product.v1.GetGuestCatalogSettingsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetGuestCatalogSettingsRequest.\n * Use `create(GetGuestCatalogSettingsRequestSchema)` to create a new message.\n */\nexport const GetGuestCatalogSettingsRequestSchema: GenMessage<GetGuestCatalogSettingsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 0);\n\n/**\n * @generated from message dashboard.product.v1.SetGuestCatalogEntryRequest\n */\nexport type SetGuestCatalogEntryRequest = Message<\"dashboard.product.v1.SetGuestCatalogEntryRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_type = 2;\n */\n productType: string;\n\n /**\n * @generated from field: bool enabled = 3;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 sort_order = 4;\n */\n sortOrder: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.SetGuestCatalogEntryRequest.\n * Use `create(SetGuestCatalogEntryRequestSchema)` to create a new message.\n */\nexport const SetGuestCatalogEntryRequestSchema: GenMessage<SetGuestCatalogEntryRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetGuestCatalogSettingsResponse\n */\nexport type GetGuestCatalogSettingsResponse = Message<\"dashboard.product.v1.GetGuestCatalogSettingsResponse\"> & {\n /**\n * @generated from field: bool can_manage = 1;\n */\n canManage: boolean;\n\n /**\n * @generated from field: bool guest_catalog_enabled = 2;\n */\n guestCatalogEnabled: boolean;\n\n /**\n * @generated from field: repeated dashboard.product.v1.GuestCatalogEntry entries = 3;\n */\n entries: GuestCatalogEntry[];\n\n /**\n * @generated from field: repeated string available_product_ids = 4;\n */\n availableProductIds: string[];\n\n /**\n * @generated from field: repeated dashboard.product.v1.GuestCatalogProductOption product_options = 5;\n */\n productOptions: GuestCatalogProductOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetGuestCatalogSettingsResponse.\n * Use `create(GetGuestCatalogSettingsResponseSchema)` to create a new message.\n */\nexport const GetGuestCatalogSettingsResponseSchema: GenMessage<GetGuestCatalogSettingsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 2);\n\n/**\n * @generated from message dashboard.product.v1.GuestCatalogProductOption\n */\nexport type GuestCatalogProductOption = Message<\"dashboard.product.v1.GuestCatalogProductOption\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string display_name = 2;\n */\n displayName: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GuestCatalogProductOption.\n * Use `create(GuestCatalogProductOptionSchema)` to create a new message.\n */\nexport const GuestCatalogProductOptionSchema: GenMessage<GuestCatalogProductOption> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 3);\n\n/**\n * @generated from message dashboard.product.v1.GuestCatalogEntry\n */\nexport type GuestCatalogEntry = Message<\"dashboard.product.v1.GuestCatalogEntry\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string product_type = 2;\n */\n productType: string;\n\n /**\n * @generated from field: bool enabled = 3;\n */\n enabled: boolean;\n\n /**\n * @generated from field: int32 sort_order = 4;\n */\n sortOrder: number;\n\n /**\n * @generated from field: string eligibility_reason = 5;\n */\n eligibilityReason: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GuestCatalogEntry.\n * Use `create(GuestCatalogEntrySchema)` to create a new message.\n */\nexport const GuestCatalogEntrySchema: GenMessage<GuestCatalogEntry> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 4);\n\n/**\n * @generated from message dashboard.product.v1.ArchiveProductRequest\n */\nexport type ArchiveProductRequest = Message<\"dashboard.product.v1.ArchiveProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.ArchiveProductRequest.\n * Use `create(ArchiveProductRequestSchema)` to create a new message.\n */\nexport const ArchiveProductRequestSchema: GenMessage<ArchiveProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 5);\n\n/**\n * @generated from message dashboard.product.v1.DuplicateProductRequest\n */\nexport type DuplicateProductRequest = Message<\"dashboard.product.v1.DuplicateProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DuplicateProductRequest.\n * Use `create(DuplicateProductRequestSchema)` to create a new message.\n */\nexport const DuplicateProductRequestSchema: GenMessage<DuplicateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 6);\n\n/**\n * @generated from message dashboard.product.v1.DuplicateProductResponse\n */\nexport type DuplicateProductResponse = Message<\"dashboard.product.v1.DuplicateProductResponse\"> & {\n /**\n * @generated from field: string duplicated_product_id = 1;\n */\n duplicatedProductId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DuplicateProductResponse.\n * Use `create(DuplicateProductResponseSchema)` to create a new message.\n */\nexport const DuplicateProductResponseSchema: GenMessage<DuplicateProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 7);\n\n/**\n * @generated from message dashboard.product.v1.ExchangeProductIDsToNamesRequest\n */\nexport type ExchangeProductIDsToNamesRequest = Message<\"dashboard.product.v1.ExchangeProductIDsToNamesRequest\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.ExchangeProductIDsToNamesRequest.\n * Use `create(ExchangeProductIDsToNamesRequestSchema)` to create a new message.\n */\nexport const ExchangeProductIDsToNamesRequestSchema: GenMessage<ExchangeProductIDsToNamesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 8);\n\n/**\n * @generated from message dashboard.product.v1.ExchangeProductIDsToNamesResponse\n */\nexport type ExchangeProductIDsToNamesResponse = Message<\"dashboard.product.v1.ExchangeProductIDsToNamesResponse\"> & {\n /**\n * @generated from field: map<string, string> product_names = 1;\n */\n productNames: { [key: string]: string };\n};\n\n/**\n * Describes the message dashboard.product.v1.ExchangeProductIDsToNamesResponse.\n * Use `create(ExchangeProductIDsToNamesResponseSchema)` to create a new message.\n */\nexport const ExchangeProductIDsToNamesResponseSchema: GenMessage<ExchangeProductIDsToNamesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 9);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersRequest\n */\nexport type GetFileAccessMembersRequest = Message<\"dashboard.product.v1.GetFileAccessMembersRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional string variant_id = 3;\n */\n variantId?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersRequest.\n * Use `create(GetFileAccessMembersRequestSchema)` to create a new message.\n */\nexport const GetFileAccessMembersRequestSchema: GenMessage<GetFileAccessMembersRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 10);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersResponse\n */\nexport type GetFileAccessMembersResponse = Message<\"dashboard.product.v1.GetFileAccessMembersResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetFileAccessMembersResponse.Value members = 1;\n */\n members: GetFileAccessMembersResponse_Value[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersResponse.\n * Use `create(GetFileAccessMembersResponseSchema)` to create a new message.\n */\nexport const GetFileAccessMembersResponseSchema: GenMessage<GetFileAccessMembersResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 11);\n\n/**\n * @generated from message dashboard.product.v1.GetFileAccessMembersResponse.Value\n */\nexport type GetFileAccessMembersResponse_Value = Message<\"dashboard.product.v1.GetFileAccessMembersResponse.Value\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string email = 2;\n */\n email: string;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp created_at = 3;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetFileAccessMembersResponse.Value.\n * Use `create(GetFileAccessMembersResponse_ValueSchema)` to create a new message.\n */\nexport const GetFileAccessMembersResponse_ValueSchema: GenMessage<GetFileAccessMembersResponse_Value> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 11, 0);\n\n/**\n * @generated from message dashboard.product.v1.GiveAccessToFileRequest\n */\nexport type GiveAccessToFileRequest = Message<\"dashboard.product.v1.GiveAccessToFileRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: optional string variant_id = 2;\n */\n variantId?: string;\n\n /**\n * @generated from field: string email = 3;\n */\n email: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GiveAccessToFileRequest.\n * Use `create(GiveAccessToFileRequestSchema)` to create a new message.\n */\nexport const GiveAccessToFileRequestSchema: GenMessage<GiveAccessToFileRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 12);\n\n/**\n * @generated from message dashboard.product.v1.GiveAccessToFileResponse\n */\nexport type GiveAccessToFileResponse = Message<\"dashboard.product.v1.GiveAccessToFileResponse\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GiveAccessToFileResponse.\n * Use `create(GiveAccessToFileResponseSchema)` to create a new message.\n */\nexport const GiveAccessToFileResponseSchema: GenMessage<GiveAccessToFileResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 13);\n\n/**\n * @generated from message dashboard.product.v1.RemoveAccessToFileRequest\n */\nexport type RemoveAccessToFileRequest = Message<\"dashboard.product.v1.RemoveAccessToFileRequest\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.RemoveAccessToFileRequest.\n * Use `create(RemoveAccessToFileRequestSchema)` to create a new message.\n */\nexport const RemoveAccessToFileRequestSchema: GenMessage<RemoveAccessToFileRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 14);\n\n/**\n * @generated from message dashboard.product.v1.RemoveAccessToFileResponse\n */\nexport type RemoveAccessToFileResponse = Message<\"dashboard.product.v1.RemoveAccessToFileResponse\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.RemoveAccessToFileResponse.\n * Use `create(RemoveAccessToFileResponseSchema)` to create a new message.\n */\nexport const RemoveAccessToFileResponseSchema: GenMessage<RemoveAccessToFileResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 15);\n\n/**\n * @generated from message dashboard.product.v1.SendTestEmailWithMessageRequest\n */\nexport type SendTestEmailWithMessageRequest = Message<\"dashboard.product.v1.SendTestEmailWithMessageRequest\"> & {\n /**\n * @generated from field: string email = 1;\n */\n email: string;\n\n /**\n * @generated from field: string html_message = 2;\n */\n htmlMessage: string;\n\n /**\n * @generated from field: optional string title = 3;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SendTestEmailWithMessageRequest.\n * Use `create(SendTestEmailWithMessageRequestSchema)` to create a new message.\n */\nexport const SendTestEmailWithMessageRequestSchema: GenMessage<SendTestEmailWithMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 16);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsRequest\n */\nexport type GetProductVariantsRequest = Message<\"dashboard.product.v1.GetProductVariantsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsRequest.\n * Use `create(GetProductVariantsRequestSchema)` to create a new message.\n */\nexport const GetProductVariantsRequestSchema: GenMessage<GetProductVariantsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 17);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsResponse\n */\nexport type GetProductVariantsResponse = Message<\"dashboard.product.v1.GetProductVariantsResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductVariantsResponse.SingleVariant variants = 1;\n */\n variants: GetProductVariantsResponse_SingleVariant[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsResponse.\n * Use `create(GetProductVariantsResponseSchema)` to create a new message.\n */\nexport const GetProductVariantsResponseSchema: GenMessage<GetProductVariantsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 18);\n\n/**\n * @generated from message dashboard.product.v1.GetProductVariantsResponse.SingleVariant\n */\nexport type GetProductVariantsResponse_SingleVariant = Message<\"dashboard.product.v1.GetProductVariantsResponse.SingleVariant\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductVariantsResponse.SingleVariant.\n * Use `create(GetProductVariantsResponse_SingleVariantSchema)` to create a new message.\n */\nexport const GetProductVariantsResponse_SingleVariantSchema: GenMessage<GetProductVariantsResponse_SingleVariant> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 18, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest\n */\nexport type UpdateProductAfterPurchaseMessageRequest = Message<\"dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string message = 2;\n */\n message: string;\n\n /**\n * @generated from field: string html_message = 3;\n */\n htmlMessage: string;\n\n /**\n * @generated from field: optional string title = 4;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductAfterPurchaseMessageRequest.\n * Use `create(UpdateProductAfterPurchaseMessageRequestSchema)` to create a new message.\n */\nexport const UpdateProductAfterPurchaseMessageRequestSchema: GenMessage<UpdateProductAfterPurchaseMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 19);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageRequest\n */\nexport type GetProductAfterPurchaseMessageRequest = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageRequest.\n * Use `create(GetProductAfterPurchaseMessageRequestSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageRequestSchema: GenMessage<GetProductAfterPurchaseMessageRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 20);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageResponse\n */\nexport type GetProductAfterPurchaseMessageResponse = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductAfterPurchaseMessageResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success success = 1;\n */\n value: GetProductAfterPurchaseMessageResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.\n * Use `create(GetProductAfterPurchaseMessageResponseSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageResponseSchema: GenMessage<GetProductAfterPurchaseMessageResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 21);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success\n */\nexport type GetProductAfterPurchaseMessageResponse_Success = Message<\"dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success\"> & {\n /**\n * @generated from field: optional string message = 1;\n */\n message?: string;\n\n /**\n * @generated from field: optional string html_message = 2;\n */\n htmlMessage?: string;\n\n /**\n * @generated from field: optional string title = 3;\n */\n title?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAfterPurchaseMessageResponse.Success.\n * Use `create(GetProductAfterPurchaseMessageResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductAfterPurchaseMessageResponse_SuccessSchema: GenMessage<GetProductAfterPurchaseMessageResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 21, 0);\n\n/**\n * @generated from message dashboard.product.v1.PublishProductIfNeededRequest\n */\nexport type PublishProductIfNeededRequest = Message<\"dashboard.product.v1.PublishProductIfNeededRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.PublishProductIfNeededRequest.\n * Use `create(PublishProductIfNeededRequestSchema)` to create a new message.\n */\nexport const PublishProductIfNeededRequestSchema: GenMessage<PublishProductIfNeededRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 22);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest\n */\nexport type UpdateProductSendTicketAfterPurchaseRequest = Message<\"dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: bool send_ticket_after_purchase = 2;\n */\n sendTicketAfterPurchase: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductSendTicketAfterPurchaseRequest.\n * Use `create(UpdateProductSendTicketAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const UpdateProductSendTicketAfterPurchaseRequestSchema: GenMessage<UpdateProductSendTicketAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 23);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest\n */\nexport type UpdateProductAudiobookAfterPurchaseRequest = Message<\"dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string audiobook_id = 2;\n */\n audiobookId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductAudiobookAfterPurchaseRequest.\n * Use `create(UpdateProductAudiobookAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const UpdateProductAudiobookAfterPurchaseRequestSchema: GenMessage<UpdateProductAudiobookAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 24);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest\n */\nexport type GetProductSendTicketAfterPurchaseRequest = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseRequest.\n * Use `create(GetProductSendTicketAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseRequestSchema: GenMessage<GetProductSendTicketAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 25);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse\n */\nexport type GetProductSendTicketAfterPurchaseResponse = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success success = 1;\n */\n value: GetProductSendTicketAfterPurchaseResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.\n * Use `create(GetProductSendTicketAfterPurchaseResponseSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseResponseSchema: GenMessage<GetProductSendTicketAfterPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 26);\n\n/**\n * @generated from message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success\n */\nexport type GetProductSendTicketAfterPurchaseResponse_Success = Message<\"dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success\"> & {\n /**\n * @generated from field: bool send_ticket_after_purchase = 1;\n */\n sendTicketAfterPurchase: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductSendTicketAfterPurchaseResponse.Success.\n * Use `create(GetProductSendTicketAfterPurchaseResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductSendTicketAfterPurchaseResponse_SuccessSchema: GenMessage<GetProductSendTicketAfterPurchaseResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 26, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest\n */\nexport type GetProductAudiobookAfterPurchaseRequest = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseRequest.\n * Use `create(GetProductAudiobookAfterPurchaseRequestSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseRequestSchema: GenMessage<GetProductAudiobookAfterPurchaseRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 27);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse\n */\nexport type GetProductAudiobookAfterPurchaseResponse = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success success = 1;\n */\n value: GetProductAudiobookAfterPurchaseResponse_Success;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.\n * Use `create(GetProductAudiobookAfterPurchaseResponseSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseResponseSchema: GenMessage<GetProductAudiobookAfterPurchaseResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 28);\n\n/**\n * @generated from message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success\n */\nexport type GetProductAudiobookAfterPurchaseResponse_Success = Message<\"dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success\"> & {\n /**\n * @generated from field: string audiobook_id = 1;\n */\n audiobookId: string;\n\n /**\n * @generated from field: string audiobook_title = 2;\n */\n audiobookTitle: string;\n\n /**\n * @generated from field: string audiobook_image_url = 3;\n */\n audiobookImageUrl: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductAudiobookAfterPurchaseResponse.Success.\n * Use `create(GetProductAudiobookAfterPurchaseResponse_SuccessSchema)` to create a new message.\n */\nexport const GetProductAudiobookAfterPurchaseResponse_SuccessSchema: GenMessage<GetProductAudiobookAfterPurchaseResponse_Success> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 28, 0);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsRequest\n */\nexport type SearchProductsRequest = Message<\"dashboard.product.v1.SearchProductsRequest\"> & {\n /**\n * @generated from field: optional string search = 1;\n */\n search?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsRequest.\n * Use `create(SearchProductsRequestSchema)` to create a new message.\n */\nexport const SearchProductsRequestSchema: GenMessage<SearchProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 29);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse\n */\nexport type SearchProductsResponse = Message<\"dashboard.product.v1.SearchProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.SearchProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.SearchProductsResponse.Result success = 1;\n */\n value: SearchProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.\n * Use `create(SearchProductsResponseSchema)` to create a new message.\n */\nexport const SearchProductsResponseSchema: GenMessage<SearchProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse.SingleProduct\n */\nexport type SearchProductsResponse_SingleProduct = Message<\"dashboard.product.v1.SearchProductsResponse.SingleProduct\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string image_url = 3;\n */\n imageUrl?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.SingleProduct.\n * Use `create(SearchProductsResponse_SingleProductSchema)` to create a new message.\n */\nexport const SearchProductsResponse_SingleProductSchema: GenMessage<SearchProductsResponse_SingleProduct> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30, 0);\n\n/**\n * @generated from message dashboard.product.v1.SearchProductsResponse.Result\n */\nexport type SearchProductsResponse_Result = Message<\"dashboard.product.v1.SearchProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.SearchProductsResponse.SingleProduct products = 1;\n */\n products: SearchProductsResponse_SingleProduct[];\n};\n\n/**\n * Describes the message dashboard.product.v1.SearchProductsResponse.Result.\n * Use `create(SearchProductsResponse_ResultSchema)` to create a new message.\n */\nexport const SearchProductsResponse_ResultSchema: GenMessage<SearchProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 30, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetProductBoughtArticlesRequest\n */\nexport type GetProductBoughtArticlesRequest = Message<\"dashboard.product.v1.GetProductBoughtArticlesRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductBoughtArticlesRequest.\n * Use `create(GetProductBoughtArticlesRequestSchema)` to create a new message.\n */\nexport const GetProductBoughtArticlesRequestSchema: GenMessage<GetProductBoughtArticlesRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 31);\n\n/**\n * @generated from message dashboard.product.v1.GetProductBoughtArticlesResponse\n */\nexport type GetProductBoughtArticlesResponse = Message<\"dashboard.product.v1.GetProductBoughtArticlesResponse\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.ProductBoughtArticle articles = 1;\n */\n articles: ProductBoughtArticle[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductBoughtArticlesResponse.\n * Use `create(GetProductBoughtArticlesResponseSchema)` to create a new message.\n */\nexport const GetProductBoughtArticlesResponseSchema: GenMessage<GetProductBoughtArticlesResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 32);\n\n/**\n * @generated from message dashboard.product.v1.ProductBoughtArticle\n */\nexport type ProductBoughtArticle = Message<\"dashboard.product.v1.ProductBoughtArticle\"> & {\n /**\n * empty string if new.\n *\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string product_id = 2;\n */\n productId: string;\n\n /**\n * @generated from field: optional string content = 3;\n */\n content?: string;\n\n /**\n * @generated from field: google.protobuf.Timestamp created_at = 8;\n */\n createdAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.ProductBoughtArticle.\n * Use `create(ProductBoughtArticleSchema)` to create a new message.\n */\nexport const ProductBoughtArticleSchema: GenMessage<ProductBoughtArticle> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 33);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductBoughtArticleRequest\n */\nexport type UpdateProductBoughtArticleRequest = Message<\"dashboard.product.v1.UpdateProductBoughtArticleRequest\"> & {\n /**\n * @generated from field: dashboard.product.v1.ProductBoughtArticle article = 1;\n */\n article?: ProductBoughtArticle;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductBoughtArticleRequest.\n * Use `create(UpdateProductBoughtArticleRequestSchema)` to create a new message.\n */\nexport const UpdateProductBoughtArticleRequestSchema: GenMessage<UpdateProductBoughtArticleRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 34);\n\n/**\n * @generated from message dashboard.product.v1.GetProductRequest\n */\nexport type GetProductRequest = Message<\"dashboard.product.v1.GetProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductRequest.\n * Use `create(GetProductRequestSchema)` to create a new message.\n */\nexport const GetProductRequestSchema: GenMessage<GetProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 35);\n\n/**\n * @generated from message dashboard.product.v1.GetProductResponse\n */\nexport type GetProductResponse = Message<\"dashboard.product.v1.GetProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.ProductV2 product = 1;\n */\n value: ProductV2;\n case: \"product\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductResponse.SellStats sell_stats = 3;\n */\n sellStats: GetProductResponse_SellStats[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductResponse.\n * Use `create(GetProductResponseSchema)` to create a new message.\n */\nexport const GetProductResponseSchema: GenMessage<GetProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 36);\n\n/**\n * @generated from message dashboard.product.v1.GetProductResponse.SellStats\n */\nexport type GetProductResponse_SellStats = Message<\"dashboard.product.v1.GetProductResponse.SellStats\"> & {\n /**\n * @generated from field: string productID = 1;\n */\n productID: string;\n\n /**\n * @generated from field: int32 sold = 2;\n */\n sold: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductResponse.SellStats.\n * Use `create(GetProductResponse_SellStatsSchema)` to create a new message.\n */\nexport const GetProductResponse_SellStatsSchema: GenMessage<GetProductResponse_SellStats> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 36, 0);\n\n/**\n * @generated from message dashboard.product.v1.CreateOrUpdateProductRequest\n */\nexport type CreateOrUpdateProductRequest = Message<\"dashboard.product.v1.CreateOrUpdateProductRequest\"> & {\n /**\n * @generated from field: dashboard.product.v1.ProductV2 product = 1;\n */\n product?: ProductV2;\n\n /**\n * @generated from field: bool is_description_different = 2;\n */\n isDescriptionDifferent: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateOrUpdateProductRequest.\n * Use `create(CreateOrUpdateProductRequestSchema)` to create a new message.\n */\nexport const CreateOrUpdateProductRequestSchema: GenMessage<CreateOrUpdateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 37);\n\n/**\n * @generated from message dashboard.product.v1.UpdateProductUniqueSlugRequest\n */\nexport type UpdateProductUniqueSlugRequest = Message<\"dashboard.product.v1.UpdateProductUniqueSlugRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: string new_unique_slug = 2;\n */\n newUniqueSlug: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateProductUniqueSlugRequest.\n * Use `create(UpdateProductUniqueSlugRequestSchema)` to create a new message.\n */\nexport const UpdateProductUniqueSlugRequestSchema: GenMessage<UpdateProductUniqueSlugRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 38);\n\n/**\n * @generated from message dashboard.product.v1.ProductV2\n */\nexport type ProductV2 = Message<\"dashboard.product.v1.ProductV2\"> & {\n /**\n * @generated from field: optional string id = 1;\n */\n id?: string;\n\n /**\n * @generated from field: string unique_slug = 2;\n */\n uniqueSlug: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: dashboard.product.v1.ProductV2.Status status = 4;\n */\n status: ProductV2_Status;\n\n /**\n * @generated from field: optional bool is_recurring = 5;\n */\n isRecurring?: boolean;\n\n /**\n * @generated from field: optional dashboard.product.v1.Recurring recurring = 6;\n */\n recurring?: Recurring;\n\n /**\n * @generated from field: string name = 7;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 8;\n */\n description?: string;\n\n /**\n * @generated from field: optional string html_description = 9;\n */\n htmlDescription?: string;\n\n /**\n * @generated from field: optional string short_description = 10;\n */\n shortDescription?: string;\n\n /**\n * @generated from field: optional int32 price_amount = 11;\n */\n priceAmount?: number;\n\n /**\n * @generated from field: optional string price_currency = 12;\n */\n priceCurrency?: string;\n\n /**\n * @generated from field: optional float tax = 13;\n */\n tax?: number;\n\n /**\n * @generated from field: optional int32 available_quantity = 14;\n */\n availableQuantity?: number;\n\n /**\n * @generated from field: map<string, string> features = 15;\n */\n features: { [key: string]: string };\n\n /**\n * @generated from field: repeated string images = 16;\n */\n images: string[];\n\n /**\n * @generated from field: optional string thumbnail_image = 17;\n */\n thumbnailImage?: string;\n\n /**\n * @generated from field: optional string main_image = 18;\n */\n mainImage?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.Variant variants = 19;\n */\n variants: Variant[];\n\n /**\n * @generated from field: optional bool send_ticket_after_purchase = 20;\n */\n sendTicketAfterPurchase?: boolean;\n\n /**\n * @generated from field: optional bool is_product_visible_on_list = 21;\n */\n isProductVisibleOnList?: boolean;\n\n /**\n * @generated from field: optional bool is_deliverable = 24;\n */\n isDeliverable?: boolean;\n\n /**\n * @generated from field: optional bool force_manual_payment = 29;\n */\n forceManualPayment?: boolean;\n\n /**\n * @generated from field: optional int32 weight_grams = 30;\n */\n weightGrams?: number;\n\n /**\n * @generated from field: optional int32 width_millimeters = 31;\n */\n widthMillimeters?: number;\n\n /**\n * @generated from field: optional int32 height_millimeters = 32;\n */\n heightMillimeters?: number;\n\n /**\n * @generated from field: int64 created_at = 25;\n */\n createdAt: bigint;\n\n /**\n * @generated from field: int64 updated_at = 26;\n */\n updatedAt: bigint;\n\n /**\n * @generated from field: optional int64 deleted_at = 27;\n */\n deletedAt?: bigint;\n\n /**\n * @generated from field: optional bool archived = 28;\n */\n archived?: boolean;\n\n /**\n * Monotonic conditional-save token. Clients must send the revision they read.\n *\n * @generated from field: int32 revision = 33;\n */\n revision: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.ProductV2.\n * Use `create(ProductV2Schema)` to create a new message.\n */\nexport const ProductV2Schema: GenMessage<ProductV2> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 39);\n\n/**\n * @generated from enum dashboard.product.v1.ProductV2.Status\n */\nexport enum ProductV2_Status {\n /**\n * @generated from enum value: DRAFT = 0;\n */\n DRAFT = 0,\n\n /**\n * @generated from enum value: UNPUBLISHED = 1;\n */\n UNPUBLISHED = 1,\n\n /**\n * @generated from enum value: PUBLISHED = 2;\n */\n PUBLISHED = 2,\n}\n\n/**\n * Describes the enum dashboard.product.v1.ProductV2.Status.\n */\nexport const ProductV2_StatusSchema: GenEnum<ProductV2_Status> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 39, 0);\n\n/**\n * @generated from message dashboard.product.v1.Recurring\n */\nexport type Recurring = Message<\"dashboard.product.v1.Recurring\"> & {\n /**\n * @generated from field: dashboard.product.v1.BillingPeriod billingPeriod = 1;\n */\n billingPeriod: BillingPeriod;\n\n /**\n * @generated from field: optional int32 trial_days = 2;\n */\n trialDays?: number;\n\n /**\n * @generated from field: optional int32 number_of_payments = 3;\n */\n numberOfPayments?: number;\n\n /**\n * @generated from field: optional bool change_amount_for_currentSubscribers = 4;\n */\n changeAmountForCurrentSubscribers?: boolean;\n\n /**\n * @generated from field: optional bool remove_access_for_cancelled_subscribers = 5;\n */\n removeAccessForCancelledSubscribers?: boolean;\n\n /**\n * @generated from field: optional bool should_send_trial_period_reminder = 6;\n */\n shouldSendTrialPeriodReminder?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.Recurring.\n * Use `create(RecurringSchema)` to create a new message.\n */\nexport const RecurringSchema: GenMessage<Recurring> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 40);\n\n/**\n * @generated from message dashboard.product.v1.VariantDiscount\n */\nexport type VariantDiscount = Message<\"dashboard.product.v1.VariantDiscount\"> & {\n /**\n * @generated from field: dashboard.product.v1.VariantDiscount.Type type = 1;\n */\n type: VariantDiscount_Type;\n\n /**\n * Minor units for FIXED; basis points (10000 = 100%) for PERCENTAGE.\n *\n * @generated from field: int32 amount = 2;\n */\n amount: number;\n\n /**\n * Kept at field 3 for wire compatibility with the original discount model.\n *\n * @generated from field: optional google.protobuf.Timestamp end_date = 3;\n */\n endDate?: Timestamp;\n\n /**\n * @generated from field: optional string id = 4;\n */\n id?: string;\n\n /**\n * @generated from field: bool enabled = 5;\n */\n enabled: boolean;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp start_date = 6;\n */\n startDate?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.VariantDiscount.\n * Use `create(VariantDiscountSchema)` to create a new message.\n */\nexport const VariantDiscountSchema: GenMessage<VariantDiscount> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 41);\n\n/**\n * @generated from enum dashboard.product.v1.VariantDiscount.Type\n */\nexport enum VariantDiscount_Type {\n /**\n * @generated from enum value: FIXED = 0;\n */\n FIXED = 0,\n\n /**\n * @generated from enum value: PERCENTAGE = 1;\n */\n PERCENTAGE = 1,\n}\n\n/**\n * Describes the enum dashboard.product.v1.VariantDiscount.Type.\n */\nexport const VariantDiscount_TypeSchema: GenEnum<VariantDiscount_Type> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 41, 0);\n\n/**\n * @generated from message dashboard.product.v1.Variant\n */\nexport type Variant = Message<\"dashboard.product.v1.Variant\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: optional string description = 3;\n */\n description?: string;\n\n /**\n * @generated from field: optional string image_url = 4;\n */\n imageUrl?: string;\n\n /**\n * @generated from field: int32 price_amount = 5;\n */\n priceAmount: number;\n\n /**\n * @generated from field: string price_currency = 6;\n */\n priceCurrency: string;\n\n /**\n * @generated from field: optional int32 tax = 7;\n */\n tax?: number;\n\n /**\n * @generated from field: optional int32 available_quantity = 8;\n */\n availableQuantity?: number;\n\n /**\n * @generated from field: optional dashboard.product.v1.Recurring recurring = 9;\n */\n recurring?: Recurring;\n\n /**\n * @generated from field: optional bool is_deliverable = 10;\n */\n isDeliverable?: boolean;\n\n /**\n * @generated from field: optional int32 lowest_price_30_days = 11;\n */\n lowestPrice30Days?: number;\n\n /**\n * @generated from field: optional dashboard.product.v1.VariantDiscount discount = 12;\n */\n discount?: VariantDiscount;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp estimated_delivery_at = 13;\n */\n estimatedDeliveryAt?: Timestamp;\n\n /**\n * @generated from field: int32 regular_price_amount = 14;\n */\n regularPriceAmount: number;\n\n /**\n * @generated from field: int32 effective_price_amount = 15;\n */\n effectivePriceAmount: number;\n\n /**\n * @generated from field: optional int32 reference_price_amount = 16;\n */\n referencePriceAmount?: number;\n\n /**\n * @generated from field: bool reference_history_available = 17;\n */\n referenceHistoryAvailable: boolean;\n\n /**\n * @generated from field: int64 price_version = 18;\n */\n priceVersion: bigint;\n\n /**\n * @generated from field: optional google.protobuf.Timestamp next_price_change_at = 19;\n */\n nextPriceChangeAt?: Timestamp;\n};\n\n/**\n * Describes the message dashboard.product.v1.Variant.\n * Use `create(VariantSchema)` to create a new message.\n */\nexport const VariantSchema: GenMessage<Variant> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 42);\n\n/**\n * @generated from message dashboard.product.v1.CreateOrUpdateProductResponse\n */\nexport type CreateOrUpdateProductResponse = Message<\"dashboard.product.v1.CreateOrUpdateProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.CreateOrUpdateProductResponse.result\n */\n result: {\n /**\n * @generated from field: string product_id = 1;\n */\n value: string;\n case: \"productId\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateOrUpdateProductResponse.\n * Use `create(CreateOrUpdateProductResponseSchema)` to create a new message.\n */\nexport const CreateOrUpdateProductResponseSchema: GenMessage<CreateOrUpdateProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 43);\n\n/**\n * @generated from message dashboard.product.v1.BoolResponse\n */\nexport type BoolResponse = Message<\"dashboard.product.v1.BoolResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.BoolResponse.result\n */\n result: {\n /**\n * @generated from field: google.protobuf.Empty success = 1;\n */\n value: Empty;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.BoolResponse.\n * Use `create(BoolResponseSchema)` to create a new message.\n */\nexport const BoolResponseSchema: GenMessage<BoolResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 44);\n\n/**\n * Plain bool result message for non-success/failure RPCs\n *\n * @generated from message dashboard.product.v1.OperationResult\n */\nexport type OperationResult = Message<\"dashboard.product.v1.OperationResult\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.OperationResult.\n * Use `create(OperationResultSchema)` to create a new message.\n */\nexport const OperationResultSchema: GenMessage<OperationResult> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 45);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsRequest\n */\nexport type GetProductsRequest = Message<\"dashboard.product.v1.GetProductsRequest\"> & {\n /**\n * @generated from field: optional string search = 1;\n */\n search?: string;\n\n /**\n * @generated from field: optional string type = 2;\n */\n type?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsRequest.\n * Use `create(GetProductsRequestSchema)` to create a new message.\n */\nexport const GetProductsRequestSchema: GenMessage<GetProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 46);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsResponse\n */\nexport type GetProductsResponse = Message<\"dashboard.product.v1.GetProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductsResponse.Result success = 1;\n */\n value: GetProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsResponse.\n * Use `create(GetProductsResponseSchema)` to create a new message.\n */\nexport const GetProductsResponseSchema: GenMessage<GetProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 47);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsResponse.Result\n */\nexport type GetProductsResponse_Result = Message<\"dashboard.product.v1.GetProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsResponse.Result.\n * Use `create(GetProductsResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductsResponse_ResultSchema: GenMessage<GetProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 47, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsRequest\n */\nexport type GetProductsByIdsRequest = Message<\"dashboard.product.v1.GetProductsByIdsRequest\"> & {\n /**\n * @generated from field: repeated string ids = 1;\n */\n ids: string[];\n\n /**\n * @generated from field: optional string currency = 2;\n */\n currency?: string;\n\n /**\n * @generated from field: optional string lang = 3;\n */\n lang?: string;\n\n /**\n * @generated from field: optional bool group_variants = 4;\n */\n groupVariants?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsRequest.\n * Use `create(GetProductsByIdsRequestSchema)` to create a new message.\n */\nexport const GetProductsByIdsRequestSchema: GenMessage<GetProductsByIdsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 48);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse\n */\nexport type GetProductsByIdsResponse = Message<\"dashboard.product.v1.GetProductsByIdsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductsByIdsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductsByIdsResponse.Result success = 1;\n */\n value: GetProductsByIdsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.\n * Use `create(GetProductsByIdsResponseSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponseSchema: GenMessage<GetProductsByIdsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse.Product\n */\nexport type GetProductsByIdsResponse_Product = Message<\"dashboard.product.v1.GetProductsByIdsResponse.Product\"> & {\n /**\n * @generated from field: string id = 1;\n */\n id: string;\n\n /**\n * @generated from field: string name = 2;\n */\n name: string;\n\n /**\n * @generated from field: int32 price = 3;\n */\n price: number;\n\n /**\n * @generated from field: string currency = 4;\n */\n currency: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.Product.\n * Use `create(GetProductsByIdsResponse_ProductSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponse_ProductSchema: GenMessage<GetProductsByIdsResponse_Product> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetProductsByIdsResponse.Result\n */\nexport type GetProductsByIdsResponse_Result = Message<\"dashboard.product.v1.GetProductsByIdsResponse.Result\"> & {\n /**\n * @generated from field: repeated dashboard.product.v1.GetProductsByIdsResponse.Product products = 1;\n */\n products: GetProductsByIdsResponse_Product[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductsByIdsResponse.Result.\n * Use `create(GetProductsByIdsResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductsByIdsResponse_ResultSchema: GenMessage<GetProductsByIdsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 49, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridRequest\n */\nexport type GetProductGridRequest = Message<\"dashboard.product.v1.GetProductGridRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional string currency = 3;\n */\n currency?: string;\n\n /**\n * @generated from field: optional bool group_variants = 4;\n */\n groupVariants?: boolean;\n\n /**\n * @generated from field: optional int32 offset = 5;\n */\n offset?: number;\n\n /**\n * @generated from field: optional int32 limit = 6;\n */\n limit?: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridRequest.\n * Use `create(GetProductGridRequestSchema)` to create a new message.\n */\nexport const GetProductGridRequestSchema: GenMessage<GetProductGridRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 50);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridResponse\n */\nexport type GetProductGridResponse = Message<\"dashboard.product.v1.GetProductGridResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetProductGridResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetProductGridResponse.Result success = 1;\n */\n value: GetProductGridResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridResponse.\n * Use `create(GetProductGridResponseSchema)` to create a new message.\n */\nexport const GetProductGridResponseSchema: GenMessage<GetProductGridResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 51);\n\n/**\n * @generated from message dashboard.product.v1.GetProductGridResponse.Result\n */\nexport type GetProductGridResponse_Result = Message<\"dashboard.product.v1.GetProductGridResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductGridResponse.Result.\n * Use `create(GetProductGridResponse_ResultSchema)` to create a new message.\n */\nexport const GetProductGridResponse_ResultSchema: GenMessage<GetProductGridResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 51, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsRequest\n */\nexport type GetMainPageProductsRequest = Message<\"dashboard.product.v1.GetMainPageProductsRequest\"> & {\n /**\n * @generated from field: optional string project_id = 1;\n */\n projectId?: string;\n\n /**\n * @generated from field: optional string search = 2;\n */\n search?: string;\n\n /**\n * @generated from field: optional int32 limit = 3;\n */\n limit?: number;\n\n /**\n * @generated from field: optional int32 offset = 4;\n */\n offset?: number;\n\n /**\n * @generated from field: optional bool include_archived = 5;\n */\n includeArchived?: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsRequest.\n * Use `create(GetMainPageProductsRequestSchema)` to create a new message.\n */\nexport const GetMainPageProductsRequestSchema: GenMessage<GetMainPageProductsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 52);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsResponse\n */\nexport type GetMainPageProductsResponse = Message<\"dashboard.product.v1.GetMainPageProductsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetMainPageProductsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetMainPageProductsResponse.Result success = 1;\n */\n value: GetMainPageProductsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsResponse.\n * Use `create(GetMainPageProductsResponseSchema)` to create a new message.\n */\nexport const GetMainPageProductsResponseSchema: GenMessage<GetMainPageProductsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 53);\n\n/**\n * @generated from message dashboard.product.v1.GetMainPageProductsResponse.Result\n */\nexport type GetMainPageProductsResponse_Result = Message<\"dashboard.product.v1.GetMainPageProductsResponse.Result\"> & {\n /**\n * @generated from field: repeated string product_ids = 1;\n */\n productIds: string[];\n\n /**\n * @generated from field: optional int32 total_count = 2;\n */\n totalCount?: number;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetMainPageProductsResponse.Result.\n * Use `create(GetMainPageProductsResponse_ResultSchema)` to create a new message.\n */\nexport const GetMainPageProductsResponse_ResultSchema: GenMessage<GetMainPageProductsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 53, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugRequest\n */\nexport type GetPublicProductByUniqueSlugRequest = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugRequest\"> & {\n /**\n * @generated from field: string unique_slug = 1;\n */\n uniqueSlug: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugRequest.\n * Use `create(GetPublicProductByUniqueSlugRequestSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugRequestSchema: GenMessage<GetPublicProductByUniqueSlugRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 54);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugResponse\n */\nexport type GetPublicProductByUniqueSlugResponse = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetPublicProductByUniqueSlugResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result success = 1;\n */\n value: GetPublicProductByUniqueSlugResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.\n * Use `create(GetPublicProductByUniqueSlugResponseSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugResponseSchema: GenMessage<GetPublicProductByUniqueSlugResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 55);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result\n */\nexport type GetPublicProductByUniqueSlugResponse_Result = Message<\"dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: string project_id = 3;\n */\n projectId: string;\n\n /**\n * @generated from field: string id = 4;\n */\n id: string;\n\n /**\n * @generated from field: string name = 5;\n */\n name: string;\n\n /**\n * @generated from field: optional string short_description = 6;\n */\n shortDescription?: string;\n\n /**\n * @generated from field: optional int32 price_amount = 7;\n */\n priceAmount?: number;\n\n /**\n * @generated from field: optional string price_currency = 8;\n */\n priceCurrency?: string;\n\n /**\n * @generated from field: optional string main_image = 9;\n */\n mainImage?: string;\n\n /**\n * @generated from field: optional string thumbnail_image = 10;\n */\n thumbnailImage?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicProductByUniqueSlugResponse.Result.\n * Use `create(GetPublicProductByUniqueSlugResponse_ResultSchema)` to create a new message.\n */\nexport const GetPublicProductByUniqueSlugResponse_ResultSchema: GenMessage<GetPublicProductByUniqueSlugResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 55, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsRequest\n */\nexport type GetPublicAgreementsRequest = Message<\"dashboard.product.v1.GetPublicAgreementsRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: repeated string product_ids = 2;\n */\n productIds: string[];\n\n /**\n * @generated from field: bool contains_recurring = 3;\n */\n containsRecurring: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsRequest.\n * Use `create(GetPublicAgreementsRequestSchema)` to create a new message.\n */\nexport const GetPublicAgreementsRequestSchema: GenMessage<GetPublicAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 56);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse\n */\nexport type GetPublicAgreementsResponse = Message<\"dashboard.product.v1.GetPublicAgreementsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetPublicAgreementsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetPublicAgreementsResponse.Result success = 1;\n */\n value: GetPublicAgreementsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.\n * Use `create(GetPublicAgreementsResponseSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponseSchema: GenMessage<GetPublicAgreementsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse.Agreement\n */\nexport type GetPublicAgreementsResponse_Agreement = Message<\"dashboard.product.v1.GetPublicAgreementsResponse.Agreement\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: bool required = 2;\n */\n required: boolean;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.Agreement.\n * Use `create(GetPublicAgreementsResponse_AgreementSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponse_AgreementSchema: GenMessage<GetPublicAgreementsResponse_Agreement> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57, 0);\n\n/**\n * @generated from message dashboard.product.v1.GetPublicAgreementsResponse.Result\n */\nexport type GetPublicAgreementsResponse_Result = Message<\"dashboard.product.v1.GetPublicAgreementsResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.GetPublicAgreementsResponse.Agreement result = 3;\n */\n result: GetPublicAgreementsResponse_Agreement[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetPublicAgreementsResponse.Result.\n * Use `create(GetPublicAgreementsResponse_ResultSchema)` to create a new message.\n */\nexport const GetPublicAgreementsResponse_ResultSchema: GenMessage<GetPublicAgreementsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 57, 1);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductRequest\n */\nexport type GetEProductsAddedForThisProductRequest = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductRequest.\n * Use `create(GetEProductsAddedForThisProductRequestSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductRequestSchema: GenMessage<GetEProductsAddedForThisProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 58);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductResponse\n */\nexport type GetEProductsAddedForThisProductResponse = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetEProductsAddedForThisProductResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result success = 1;\n */\n value: GetEProductsAddedForThisProductResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductResponse.\n * Use `create(GetEProductsAddedForThisProductResponseSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductResponseSchema: GenMessage<GetEProductsAddedForThisProductResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 59);\n\n/**\n * @generated from message dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result\n */\nexport type GetEProductsAddedForThisProductResponse_Result = Message<\"dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result\"> & {\n /**\n * @generated from field: repeated string eproduct_ids = 1;\n */\n eproductIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetEProductsAddedForThisProductResponse.Result.\n * Use `create(GetEProductsAddedForThisProductResponse_ResultSchema)` to create a new message.\n */\nexport const GetEProductsAddedForThisProductResponse_ResultSchema: GenMessage<GetEProductsAddedForThisProductResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 59, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateEProductsAddedForThisProductRequest\n */\nexport type UpdateEProductsAddedForThisProductRequest = Message<\"dashboard.product.v1.UpdateEProductsAddedForThisProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: repeated string eproduct_ids = 2;\n */\n eproductIds: string[];\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateEProductsAddedForThisProductRequest.\n * Use `create(UpdateEProductsAddedForThisProductRequestSchema)` to create a new message.\n */\nexport const UpdateEProductsAddedForThisProductRequestSchema: GenMessage<UpdateEProductsAddedForThisProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 60);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsRequest\n */\nexport type GetListOfAdditionalAgreementsRequest = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsRequest.\n * Use `create(GetListOfAdditionalAgreementsRequestSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsRequestSchema: GenMessage<GetListOfAdditionalAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 61);\n\n/**\n * @generated from message dashboard.product.v1.AgreementOption\n */\nexport type AgreementOption = Message<\"dashboard.product.v1.AgreementOption\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n\n /**\n * @generated from field: bool is_required = 2;\n */\n isRequired: boolean;\n\n /**\n * @generated from field: optional string link = 3;\n */\n link?: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.AgreementOption.\n * Use `create(AgreementOptionSchema)` to create a new message.\n */\nexport const AgreementOptionSchema: GenMessage<AgreementOption> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 62);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsResponse\n */\nexport type GetListOfAdditionalAgreementsResponse = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsResponse\"> & {\n /**\n * @generated from oneof dashboard.product.v1.GetListOfAdditionalAgreementsResponse.result\n */\n result: {\n /**\n * @generated from field: dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result success = 1;\n */\n value: GetListOfAdditionalAgreementsResponse_Result;\n case: \"success\";\n } | {\n /**\n * @generated from field: dashboard.product.v1.FailureMessage failure = 2;\n */\n value: FailureMessage;\n case: \"failure\";\n } | { case: undefined; value?: undefined };\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.\n * Use `create(GetListOfAdditionalAgreementsResponseSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsResponseSchema: GenMessage<GetListOfAdditionalAgreementsResponse> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 63);\n\n/**\n * @generated from message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result\n */\nexport type GetListOfAdditionalAgreementsResponse_Result = Message<\"dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result\"> & {\n /**\n * @generated from field: bool success = 1;\n */\n success: boolean;\n\n /**\n * @generated from field: optional string message = 2;\n */\n message?: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.AgreementOption result = 3;\n */\n result: AgreementOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.GetListOfAdditionalAgreementsResponse.Result.\n * Use `create(GetListOfAdditionalAgreementsResponse_ResultSchema)` to create a new message.\n */\nexport const GetListOfAdditionalAgreementsResponse_ResultSchema: GenMessage<GetListOfAdditionalAgreementsResponse_Result> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 63, 0);\n\n/**\n * @generated from message dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest\n */\nexport type UpdateListOfAdditionalAgreementsRequest = Message<\"dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n\n /**\n * @generated from field: repeated dashboard.product.v1.AgreementOption agreements = 2;\n */\n agreements: AgreementOption[];\n};\n\n/**\n * Describes the message dashboard.product.v1.UpdateListOfAdditionalAgreementsRequest.\n * Use `create(UpdateListOfAdditionalAgreementsRequestSchema)` to create a new message.\n */\nexport const UpdateListOfAdditionalAgreementsRequestSchema: GenMessage<UpdateListOfAdditionalAgreementsRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 64);\n\n/**\n * @generated from message dashboard.product.v1.CreateProductRequest\n */\nexport type CreateProductRequest = Message<\"dashboard.product.v1.CreateProductRequest\"> & {\n /**\n * @generated from field: string name = 1;\n */\n name: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.CreateProductRequest.\n * Use `create(CreateProductRequestSchema)` to create a new message.\n */\nexport const CreateProductRequestSchema: GenMessage<CreateProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 65);\n\n/**\n * @generated from message dashboard.product.v1.DeleteProductRequest\n */\nexport type DeleteProductRequest = Message<\"dashboard.product.v1.DeleteProductRequest\"> & {\n /**\n * @generated from field: string product_id = 1;\n */\n productId: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.DeleteProductRequest.\n * Use `create(DeleteProductRequestSchema)` to create a new message.\n */\nexport const DeleteProductRequestSchema: GenMessage<DeleteProductRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 66);\n\n/**\n * @generated from message dashboard.product.v1.GetProductByIdRequest\n */\nexport type GetProductByIdRequest = Message<\"dashboard.product.v1.GetProductByIdRequest\"> & {\n /**\n * @generated from field: string project_id = 1;\n */\n projectId: string;\n\n /**\n * @generated from field: string id = 2;\n */\n id: string;\n};\n\n/**\n * Describes the message dashboard.product.v1.GetProductByIdRequest.\n * Use `create(GetProductByIdRequestSchema)` to create a new message.\n */\nexport const GetProductByIdRequestSchema: GenMessage<GetProductByIdRequest> = /*@__PURE__*/\n messageDesc(file_dashboard_v1_product, 67);\n\n/**\n * @generated from enum dashboard.product.v1.BillingPeriod\n */\nexport enum BillingPeriod {\n /**\n * @generated from enum value: BILLING_PERIOD_DAILY = 0;\n */\n DAILY = 0,\n\n /**\n * @generated from enum value: BILLING_PERIOD_WEEKLY = 1;\n */\n WEEKLY = 1,\n\n /**\n * @generated from enum value: BILLING_PERIOD_MONTHLY = 2;\n */\n MONTHLY = 2,\n\n /**\n * @generated from enum value: BILLING_PERIOD_QUARTERLY = 3;\n */\n QUARTERLY = 3,\n\n /**\n * @generated from enum value: BILLING_PERIOD_SEMI_ANNUALLY = 4;\n */\n SEMI_ANNUALLY = 4,\n\n /**\n * @generated from enum value: BILLING_PERIOD_ANNUALLY = 5;\n */\n ANNUALLY = 5,\n}\n\n/**\n * Describes the enum dashboard.product.v1.BillingPeriod.\n */\nexport const BillingPeriodSchema: GenEnum<BillingPeriod> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 0);\n\n/**\n * @generated from enum dashboard.product.v1.FailureMessage\n */\nexport enum FailureMessage {\n /**\n * @generated from enum value: FAILURE_MESSAGE_UNKNOWN = 0;\n */\n UNKNOWN = 0,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PROJECT_NOT_FOUND = 1;\n */\n PROJECT_NOT_FOUND = 1,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_PRODUCT_NOT_FOUND = 2;\n */\n PRODUCT_NOT_FOUND = 2,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_INVALID_PRODUCT_ID = 3;\n */\n INVALID_PRODUCT_ID = 3,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_SLUG_ALREADY_TAKEN = 4;\n */\n SLUG_ALREADY_TAKEN = 4,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_CANNOT_CREATE_PRODUCT = 5;\n */\n CANNOT_CREATE_PRODUCT = 5,\n\n /**\n * @generated from enum value: FAILURE_MESSAGE_NO_ACCESS = 6;\n */\n NO_ACCESS = 6,\n}\n\n/**\n * Describes the enum dashboard.product.v1.FailureMessage.\n */\nexport const FailureMessageSchema: GenEnum<FailureMessage> = /*@__PURE__*/\n enumDesc(file_dashboard_v1_product, 1);\n\n/**\n * @generated from service dashboard.product.v1.ProductRouter\n */\nexport const ProductRouter: GenService<{\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.CreateOrUpdateProduct\n */\n createOrUpdateProduct: {\n methodKind: \"unary\";\n input: typeof CreateOrUpdateProductRequestSchema;\n output: typeof CreateOrUpdateProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.DuplicateProduct\n */\n duplicateProduct: {\n methodKind: \"unary\";\n input: typeof DuplicateProductRequestSchema;\n output: typeof DuplicateProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductUniqueSlug\n */\n updateProductUniqueSlug: {\n methodKind: \"unary\";\n input: typeof UpdateProductUniqueSlugRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProduct\n */\n getProduct: {\n methodKind: \"unary\";\n input: typeof GetProductRequestSchema;\n output: typeof GetProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductSendTicketAfterPurchase\n */\n getProductSendTicketAfterPurchase: {\n methodKind: \"unary\";\n input: typeof GetProductSendTicketAfterPurchaseRequestSchema;\n output: typeof GetProductSendTicketAfterPurchaseResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductAudiobookAfterPurchase\n */\n getProductAudiobookAfterPurchase: {\n methodKind: \"unary\";\n input: typeof GetProductAudiobookAfterPurchaseRequestSchema;\n output: typeof GetProductAudiobookAfterPurchaseResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductSendTicketAfterPurchase\n */\n updateProductSendTicketAfterPurchase: {\n methodKind: \"unary\";\n input: typeof UpdateProductSendTicketAfterPurchaseRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductAudiobookAfterPurchase\n */\n updateProductAudiobookAfterPurchase: {\n methodKind: \"unary\";\n input: typeof UpdateProductAudiobookAfterPurchaseRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.PublishProductIfNeeded\n */\n publishProductIfNeeded: {\n methodKind: \"unary\";\n input: typeof PublishProductIfNeededRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductAfterPurchaseMessage\n */\n getProductAfterPurchaseMessage: {\n methodKind: \"unary\";\n input: typeof GetProductAfterPurchaseMessageRequestSchema;\n output: typeof GetProductAfterPurchaseMessageResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductAfterPurchaseMessage\n */\n updateProductAfterPurchaseMessage: {\n methodKind: \"unary\";\n input: typeof UpdateProductAfterPurchaseMessageRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductVariants\n */\n getProductVariants: {\n methodKind: \"unary\";\n input: typeof GetProductVariantsRequestSchema;\n output: typeof GetProductVariantsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SendTestEmailWithMessage\n */\n sendTestEmailWithMessage: {\n methodKind: \"unary\";\n input: typeof SendTestEmailWithMessageRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SearchProducts\n */\n searchProducts: {\n methodKind: \"unary\";\n input: typeof SearchProductsRequestSchema;\n output: typeof SearchProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.ExchangeProductIDsToNames\n */\n exchangeProductIDsToNames: {\n methodKind: \"unary\";\n input: typeof ExchangeProductIDsToNamesRequestSchema;\n output: typeof ExchangeProductIDsToNamesResponseSchema;\n },\n /**\n * After product buy methods\n *\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductBoughtArticles\n */\n getProductBoughtArticles: {\n methodKind: \"unary\";\n input: typeof GetProductBoughtArticlesRequestSchema;\n output: typeof GetProductBoughtArticlesResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateProductBoughtArticle\n */\n updateProductBoughtArticle: {\n methodKind: \"unary\";\n input: typeof UpdateProductBoughtArticleRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.AddProductBoughtArticle\n */\n addProductBoughtArticle: {\n methodKind: \"unary\";\n input: typeof ProductBoughtArticleSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetFileAccessMembers\n */\n getFileAccessMembers: {\n methodKind: \"unary\";\n input: typeof GetFileAccessMembersRequestSchema;\n output: typeof GetFileAccessMembersResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GiveAccessToFile\n */\n giveAccessToFile: {\n methodKind: \"unary\";\n input: typeof GiveAccessToFileRequestSchema;\n output: typeof GiveAccessToFileResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.RemoveAccessToFile\n */\n removeAccessToFile: {\n methodKind: \"unary\";\n input: typeof RemoveAccessToFileRequestSchema;\n output: typeof RemoveAccessToFileResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.ArchiveProduct\n */\n archiveProduct: {\n methodKind: \"unary\";\n input: typeof ArchiveProductRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UnarchiveProduct\n */\n unarchiveProduct: {\n methodKind: \"unary\";\n input: typeof ArchiveProductRequestSchema;\n output: typeof BoolResponseSchema;\n },\n /**\n * Dashboard product procedures (ported from tRPC)\n *\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProducts\n */\n getProducts: {\n methodKind: \"unary\";\n input: typeof GetProductsRequestSchema;\n output: typeof GetProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductsByIds\n */\n getProductsByIds: {\n methodKind: \"unary\";\n input: typeof GetProductsByIdsRequestSchema;\n output: typeof GetProductsByIdsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductGrid\n */\n getProductGrid: {\n methodKind: \"unary\";\n input: typeof GetProductGridRequestSchema;\n output: typeof GetProductGridResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetMainPageProducts\n */\n getMainPageProducts: {\n methodKind: \"unary\";\n input: typeof GetMainPageProductsRequestSchema;\n output: typeof GetMainPageProductsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetPublicProductByUniqueSlug\n */\n getPublicProductByUniqueSlug: {\n methodKind: \"unary\";\n input: typeof GetPublicProductByUniqueSlugRequestSchema;\n output: typeof GetPublicProductByUniqueSlugResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetPublicAgreements\n */\n getPublicAgreements: {\n methodKind: \"unary\";\n input: typeof GetPublicAgreementsRequestSchema;\n output: typeof GetPublicAgreementsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetEProductsAddedForThisProduct\n */\n getEProductsAddedForThisProduct: {\n methodKind: \"unary\";\n input: typeof GetEProductsAddedForThisProductRequestSchema;\n output: typeof GetEProductsAddedForThisProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateEProductsAddedForThisProduct\n */\n updateEProductsAddedForThisProduct: {\n methodKind: \"unary\";\n input: typeof UpdateEProductsAddedForThisProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetListOfAdditionalAgreements\n */\n getListOfAdditionalAgreements: {\n methodKind: \"unary\";\n input: typeof GetListOfAdditionalAgreementsRequestSchema;\n output: typeof GetListOfAdditionalAgreementsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.UpdateListOfAdditionalAgreements\n */\n updateListOfAdditionalAgreements: {\n methodKind: \"unary\";\n input: typeof UpdateListOfAdditionalAgreementsRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.CreateProduct\n */\n createProduct: {\n methodKind: \"unary\";\n input: typeof CreateProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.DeleteProduct\n */\n deleteProduct: {\n methodKind: \"unary\";\n input: typeof DeleteProductRequestSchema;\n output: typeof OperationResultSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetProductById\n */\n getProductById: {\n methodKind: \"unary\";\n input: typeof GetProductByIdRequestSchema;\n output: typeof GetProductResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.GetGuestCatalogSettings\n */\n getGuestCatalogSettings: {\n methodKind: \"unary\";\n input: typeof GetGuestCatalogSettingsRequestSchema;\n output: typeof GetGuestCatalogSettingsResponseSchema;\n },\n /**\n * @generated from rpc dashboard.product.v1.ProductRouter.SetGuestCatalogEntry\n */\n setGuestCatalogEntry: {\n methodKind: \"unary\";\n input: typeof SetGuestCatalogEntryRequestSchema;\n output: typeof GetGuestCatalogSettingsResponseSchema;\n },\n}> = /*@__PURE__*/\n serviceDesc(file_dashboard_v1_product, 0);\n\n","// @generated by protoc-gen-connect-query v2.2.0 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/public_api.proto (package public_api.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { PublicApiService } from \"./public_api_pb\";\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrder\n */\nexport const getOrder = PublicApiService.method.getOrder;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrders\n */\nexport const getOrders = PublicApiService.method.getOrders;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetOrderRetryUrl\n */\nexport const getOrderRetryUrl = PublicApiService.method.getOrderRetryUrl;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogin\n */\nexport const userPanelLogin = PublicApiService.method.userPanelLogin;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLoginWithCode\n */\nexport const userPanelLoginWithCode = PublicApiService.method.userPanelLoginWithCode;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelLogout\n */\nexport const userPanelLogout = PublicApiService.method.userPanelLogout;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelDeleteAccount\n */\nexport const userPanelDeleteAccount = PublicApiService.method.userPanelDeleteAccount;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetProducts\n */\nexport const userPanelGetProducts = PublicApiService.method.userPanelGetProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetails\n */\nexport const userPanelGetAudiobookDetails = PublicApiService.method.userPanelGetAudiobookDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetAudiobookDetailsDownloadURLs\n */\nexport const userPanelGetAudiobookDetailsDownloadURLs = PublicApiService.method.userPanelGetAudiobookDetailsDownloadURLs;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetFileDetails\n */\nexport const userPanelGetFileDetails = PublicApiService.method.userPanelGetFileDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetTicketDetails\n */\nexport const userPanelGetTicketDetails = PublicApiService.method.userPanelGetTicketDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelGetCourseDetails\n */\nexport const userPanelGetCourseDetails = PublicApiService.method.userPanelGetCourseDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.PushSendDeviceToken\n */\nexport const pushSendDeviceToken = PublicApiService.method.pushSendDeviceToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.PushEvent\n */\nexport const pushEvent = PublicApiService.method.pushEvent;\n\n/**\n * iOS SHOP methods\n *\n * @generated from rpc public_api.v1.PublicApiService.ShouldShopProducts\n */\nexport const shouldShopProducts = PublicApiService.method.shouldShopProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ShouldShowGuestCatalog\n */\nexport const shouldShowGuestCatalog = PublicApiService.method.shouldShowGuestCatalog;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetGuestCatalog\n */\nexport const getGuestCatalog = PublicApiService.method.getGuestCatalog;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UserPanelResolveProductAccess\n */\nexport const userPanelResolveProductAccess = PublicApiService.method.userPanelResolveProductAccess;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetShopProducts\n */\nexport const getShopProducts = PublicApiService.method.getShopProducts;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.DidBuyProduct\n */\nexport const didBuyProduct = PublicApiService.method.didBuyProduct;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreAccountToken\n */\nexport const getAppStoreAccountToken = PublicApiService.method.getAppStoreAccountToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.VerifyAppStorePurchase\n */\nexport const verifyAppStorePurchase = PublicApiService.method.verifyAppStorePurchase;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetAppStoreEntitlements\n */\nexport const getAppStoreEntitlements = PublicApiService.method.getAppStoreEntitlements;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.RestoreAppStorePurchases\n */\nexport const restoreAppStorePurchases = PublicApiService.method.restoreAppStorePurchases;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ClearAppStoreAccountToken\n */\nexport const clearAppStoreAccountToken = PublicApiService.method.clearAppStoreAccountToken;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetStoreKitCatalog\n */\nexport const getStoreKitCatalog = PublicApiService.method.getStoreKitCatalog;\n\n/**\n * Notification settings\n *\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettings\n */\nexport const getNotificationSettings = PublicApiService.method.getNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationSettingsDetails\n */\nexport const getNotificationSettingsDetails = PublicApiService.method.getNotificationSettingsDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UpdateGlobalNotificationSettings\n */\nexport const updateGlobalNotificationSettings = PublicApiService.method.updateGlobalNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.UpdateNotificationSettings\n */\nexport const updateNotificationSettings = PublicApiService.method.updateNotificationSettings;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetNotificationHistory\n */\nexport const getNotificationHistory = PublicApiService.method.getNotificationHistory;\n\n/**\n * Product V2 requests\n *\n * @generated from rpc public_api.v1.PublicApiService.GetAvailableCountForProduct\n */\nexport const getAvailableCountForProduct = PublicApiService.method.getAvailableCountForProduct;\n\n/**\n * Checkout requests\n *\n * @generated from rpc public_api.v1.PublicApiService.IsOneClickPaymentAvailable\n */\nexport const isOneClickPaymentAvailable = PublicApiService.method.isOneClickPaymentAvailable;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetPreOrderDetails\n */\nexport const getPreOrderDetails = PublicApiService.method.getPreOrderDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.ApplePayValidateMerchant\n */\nexport const applePayValidateMerchant = PublicApiService.method.applePayValidateMerchant;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.AuthorizeOneClickPayment\n */\nexport const authorizeOneClickPayment = PublicApiService.method.authorizeOneClickPayment;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.NotifyUserAboutProductAvailability\n */\nexport const notifyUserAboutProductAvailability = PublicApiService.method.notifyUserAboutProductAvailability;\n\n/**\n * Public order details (with obfuscation)\n *\n * @generated from rpc public_api.v1.PublicApiService.GetPublicOrderDetails\n */\nexport const getPublicOrderDetails = PublicApiService.method.getPublicOrderDetails;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.AddPublicOrderComment\n */\nexport const addPublicOrderComment = PublicApiService.method.addPublicOrderComment;\n\n/**\n * Testimonials\n *\n * @generated from rpc public_api.v1.PublicApiService.GetOrderForTestimonial\n */\nexport const getOrderForTestimonial = PublicApiService.method.getOrderForTestimonial;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.SubmitTestimonial\n */\nexport const submitTestimonial = PublicApiService.method.submitTestimonial;\n\n/**\n * @generated from rpc public_api.v1.PublicApiService.GetTestimonialUploadUrl\n */\nexport const getTestimonialUploadUrl = PublicApiService.method.getTestimonialUploadUrl;\n","// @generated by protoc-gen-connect-query v2.3.1 with parameter \"target=ts,ts_nocheck=true\"\n// @generated from file public/v1/returns.proto (package public.v1, syntax proto3)\n/* eslint-disable */\n// @ts-nocheck\n\nimport { ReturnsService } from \"./returns_pb\";\n\n/**\n * @generated from rpc public.v1.ReturnsService.StartReturnSession\n */\nexport const startReturnSession = ReturnsService.method.startReturnSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.VerifyReturnSession\n */\nexport const verifyReturnSession = ReturnsService.method.verifyReturnSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ExchangePanelSession\n */\nexport const exchangePanelSession = ReturnsService.method.exchangePanelSession;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ListReturnOrders\n */\nexport const listReturnOrders = ReturnsService.method.listReturnOrders;\n\n/**\n * @generated from rpc public.v1.ReturnsService.GetReturnableOrder\n */\nexport const getReturnableOrder = ReturnsService.method.getReturnableOrder;\n\n/**\n * @generated from rpc public.v1.ReturnsService.CreateReturnRequest\n */\nexport const createReturnRequest = ReturnsService.method.createReturnRequest;\n\n/**\n * @generated from rpc public.v1.ReturnsService.ListMyReturns\n */\nexport const listMyReturns = ReturnsService.method.listMyReturns;\n\n/**\n * @generated from rpc public.v1.ReturnsService.GetMyReturn\n */\nexport const getMyReturn = ReturnsService.method.getMyReturn;\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { Slot } from \"radix-ui\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-md text-sm font-medium whitespace-nowrap transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/30 dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n xs: \"h-6 gap-1 rounded-md px-2 text-xs has-[>svg]:px-1.5 [&_svg:not([class*='size-'])]:size-3\",\n sm: \"h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-6 rounded-md [&_svg:not([class*='size-'])]:size-3\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot.Root : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","import * as React from \"react\"\n\nimport { cn } from \"@/src/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","function parseHex(value: string): [number, number, number] | undefined {\n const match = /^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(value);\n if (match == null) {\n return undefined;\n }\n let hex = match[1];\n if (hex.length <= 4) {\n hex = hex\n .split(\"\")\n .map((char) => char + char)\n .join(\"\");\n }\n return [\n parseInt(hex.slice(0, 2), 16),\n parseInt(hex.slice(2, 4), 16),\n parseInt(hex.slice(4, 6), 16),\n ];\n}\n\nfunction parseRgb(value: string): [number, number, number] | undefined {\n const match =\n /^rgba?\\(\\s*(\\d{1,3})[\\s,]+(\\d{1,3})[\\s,]+(\\d{1,3})(?:[\\s,/]+[\\d.%]+)?\\s*\\)$/i.exec(\n value,\n );\n if (match == null) {\n return undefined;\n }\n const channels = [match[1], match[2], match[3]].map(Number);\n return channels.every((channel) => channel <= 255)\n ? (channels as [number, number, number])\n : undefined;\n}\n\nfunction linearize(channel: number): number {\n const value = channel / 255;\n return value <= 0.03928 ? value / 12.92 : ((value + 0.055) / 1.055) ** 2.4;\n}\n\n/**\n * Text color that stays readable on a brand color: white or near black,\n * whichever has the higher WCAG contrast. `undefined` when the color is not a\n * hex or `rgb()` value.\n */\nexport function readableForeground(color: string): string | undefined {\n const trimmed = color.trim();\n const rgb = parseHex(trimmed) ?? parseRgb(trimmed);\n if (rgb == null) {\n return undefined;\n }\n const [r, g, b] = rgb.map(linearize);\n const luminance = 0.2126 * r + 0.7152 * g + 0.0722 * b;\n // Contrast against white (1.05 / (L + 0.05)) versus against black.\n const whiteContrast = 1.05 / (luminance + 0.05);\n const blackContrast = (luminance + 0.05) / 0.05;\n return whiteContrast >= blackContrast ? \"#ffffff\" : \"#18181b\";\n}\n\n/**\n * Appearance tokens derived from one brand color: button background, focus\n * ring and, when the color can be parsed, a readable button foreground.\n */\nexport function brandColorTokens(color: string): {\n buttonBackground: string;\n focusRing: string;\n buttonForeground?: string;\n} {\n const foreground = readableForeground(color);\n return {\n buttonBackground: color,\n focusRing: color,\n ...(foreground != null ? { buttonForeground: foreground } : {}),\n };\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-neutral-200 bg-white px-3 py-2 text-sm ring-offset-white placeholder:text-neutral-500 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-neutral-950 focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 dark:border-neutral-800 dark:bg-neutral-950 dark:ring-offset-neutral-950 dark:placeholder:text-neutral-400 dark:focus-visible:ring-neutral-300\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nTextarea.displayName = \"Textarea\";\n\nexport { Textarea };\n","import { cn } from \"@/src/lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"bg-accent animate-pulse rounded-md\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"]}
|