@nlabs/reaktor 0.10.1 → 0.10.2
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/coverage/actions/index.html +21 -36
- package/coverage/actions/notifications.ts.html +223 -0
- package/coverage/actions/posts.ts.html +2356 -0
- package/coverage/adapters/arangoAdapter.ts.html +170 -20
- package/coverage/adapters/fileAdapter.ts.html +445 -0
- package/coverage/adapters/index.html +72 -42
- package/coverage/adapters/postAdapter.ts.html +436 -0
- package/coverage/adapters/reaktorAdapter.ts.html +201 -18
- package/coverage/adapters/tagAdapter.ts.html +274 -25
- package/coverage/adapters/userAdapter.ts.html +829 -0
- package/coverage/analyticsUtils.ts.html +286 -0
- package/coverage/config.ts.html +766 -0
- package/coverage/index.html +81 -51
- package/coverage/mocks/group.ts.html +5 -5
- package/coverage/mocks/image.ts.html +18 -12
- package/coverage/mocks/index.html +37 -7
- package/coverage/mocks/post.ts.html +8 -8
- package/coverage/mocks/tag.ts.html +2 -2
- package/coverage/mocks/user.ts.html +18 -15
- package/coverage/testUtils.ts.html +1309 -0
- package/coverage/translationQueue.ts.html +592 -0
- package/coverage/types/error.types.ts.html +148 -0
- package/coverage/types/index.html +2 -2
- package/coverage/utils/adapterUtils.ts.html +39 -27
- package/coverage/utils/analyticsUtils.ts.html +35 -41
- package/coverage/utils/authUtils.ts.html +328 -0
- package/coverage/utils/dbI18n.ts.html +280 -0
- package/coverage/utils/googleTranslate.ts.html +385 -0
- package/coverage/utils/index.html +29 -44
- package/coverage/utils/localeUtils.ts.html +193 -0
- package/coverage/utils/sessionUtils.ts.html +211 -0
- package/coverage/utils/testUtils.ts.html +1309 -0
- package/lex.config.mjs +34 -0
- package/lib/actions/apps.d.ts +25 -0
- package/lib/actions/apps.js +11 -11
- package/lib/actions/connections.d.ts +5 -0
- package/lib/actions/connections.js +6 -6
- package/lib/actions/content.d.ts +13 -0
- package/lib/actions/content.js +9 -9
- package/lib/actions/conversations.d.ts +16 -0
- package/lib/actions/conversations.js +17 -17
- package/lib/actions/dynamodb.d.ts +12 -0
- package/lib/actions/dynamodb.js +2 -2
- package/lib/actions/email.d.ts +8 -0
- package/lib/actions/email.js +2 -2
- package/lib/actions/files.d.ts +19 -0
- package/lib/actions/files.js +3 -3
- package/lib/actions/groups.d.ts +13 -0
- package/lib/actions/groups.js +15 -15
- package/lib/actions/images.d.ts +33 -0
- package/lib/actions/images.js +22 -22
- package/lib/actions/index.d.ts +27 -0
- package/lib/actions/index.js +2 -2
- package/lib/actions/ios.d.ts +7 -0
- package/lib/actions/ios.js +4 -4
- package/lib/actions/locations.d.ts +6 -0
- package/lib/actions/locations.js +3 -3
- package/lib/actions/messages.d.ts +13 -0
- package/lib/actions/messages.js +3 -3
- package/lib/actions/notifications.d.ts +9 -0
- package/lib/actions/notifications.js +2 -2
- package/lib/actions/payments.d.ts +12 -0
- package/lib/actions/payments.js +6 -6
- package/lib/actions/posts.d.ts +25 -0
- package/lib/actions/posts.js +30 -30
- package/lib/actions/profiles.d.ts +4 -0
- package/lib/actions/profiles.js +4 -4
- package/lib/actions/reactions.d.ts +32 -0
- package/lib/actions/reactions.js +16 -16
- package/lib/actions/s3.d.ts +11 -0
- package/lib/actions/s3.js +2 -2
- package/lib/actions/search.d.ts +3 -0
- package/lib/actions/search.js +3 -3
- package/lib/actions/sms.d.ts +2 -0
- package/lib/actions/sms.js +2 -2
- package/lib/actions/statistics.d.ts +4 -0
- package/lib/actions/statistics.js +4 -4
- package/lib/actions/subscriptions.d.ts +7 -0
- package/lib/actions/subscriptions.js +6 -6
- package/lib/actions/tags.d.ts +34 -0
- package/lib/actions/tags.js +6 -6
- package/lib/actions/users.d.ts +73 -0
- package/lib/actions/users.js +45 -42
- package/lib/actions/websockets.d.ts +20 -0
- package/lib/actions/websockets.js +8 -8
- package/lib/adapters/arangoAdapter.d.ts +8 -0
- package/lib/adapters/arangoAdapter.js +2 -2
- package/lib/adapters/contentAdapter.d.ts +8 -0
- package/lib/adapters/contentAdapter.js +2 -2
- package/lib/adapters/fileAdapter.d.ts +9 -0
- package/lib/adapters/fileAdapter.js +2 -2
- package/lib/adapters/imageAdapter.d.ts +8 -0
- package/lib/adapters/imageAdapter.js +2 -2
- package/lib/adapters/index.d.ts +9 -0
- package/lib/adapters/index.js +2 -0
- package/lib/adapters/messageAdapter.d.ts +8 -0
- package/lib/adapters/messageAdapter.js +2 -2
- package/lib/adapters/postAdapter.d.ts +8 -0
- package/lib/adapters/postAdapter.js +2 -2
- package/lib/adapters/reaktorAdapter.d.ts +16 -0
- package/lib/adapters/reaktorAdapter.js +2 -2
- package/lib/adapters/tagAdapter.d.ts +9 -0
- package/lib/adapters/tagAdapter.js +2 -2
- package/lib/adapters/userAdapter.d.ts +13 -0
- package/lib/adapters/userAdapter.js +2 -2
- package/lib/config.d.ts +57 -0
- package/lib/config.js +2 -2
- package/lib/handlers/graphqlHandler.d.ts +4 -0
- package/lib/handlers/graphqlHandler.js +2 -2
- package/lib/index.d.ts +19 -0
- package/lib/index.js +2 -2
- package/lib/lambdas/actions/websockets.d.ts +7 -0
- package/lib/lambdas/actions/websockets.js +6 -6
- package/lib/lambdas/authorizer.d.ts +20 -0
- package/lib/lambdas/authorizer.js +2 -2
- package/lib/lambdas/connection.d.ts +12 -0
- package/lib/lambdas/connection.js +2 -2
- package/lib/lambdas/utils/message.d.ts +1 -0
- package/lib/lambdas/utils/websocket.d.ts +7 -0
- package/lib/lambdas/utils/websocket.js +2 -2
- package/lib/mocks/conversation.d.ts +8 -0
- package/lib/mocks/file.d.ts +11 -0
- package/lib/mocks/group.d.ts +17 -0
- package/lib/mocks/group.js +2 -2
- package/lib/mocks/image.d.ts +3 -0
- package/lib/mocks/image.js +2 -2
- package/lib/mocks/post.d.ts +38 -0
- package/lib/mocks/post.js +2 -2
- package/lib/mocks/tag.d.ts +2 -0
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.d.ts +4 -0
- package/lib/mocks/user.js +2 -2
- package/lib/mutations/content.d.ts +2 -0
- package/lib/mutations/content.js +2 -0
- package/lib/mutations/index.d.ts +11 -0
- package/lib/mutations/index.js +2 -2
- package/lib/mutations/locations.d.ts +2 -0
- package/lib/mutations/locations.js +2 -2
- package/lib/mutations/messages.d.ts +2 -0
- package/lib/mutations/messages.js +2 -2
- package/lib/mutations/posts.d.ts +2 -0
- package/lib/mutations/posts.js +2 -2
- package/lib/mutations/profiles.d.ts +2 -0
- package/lib/mutations/profiles.js +2 -2
- package/lib/mutations/reactions.d.ts +2 -0
- package/lib/mutations/reactions.js +2 -2
- package/lib/mutations/statistics.d.ts +2 -0
- package/lib/mutations/statistics.js +2 -2
- package/lib/mutations/subscriptions.d.ts +2 -0
- package/lib/mutations/subscriptions.js +2 -2
- package/lib/mutations/tags.d.ts +2 -0
- package/lib/mutations/tags.js +2 -2
- package/lib/mutations/users.d.ts +1 -0
- package/lib/mutations/users.js +2 -2
- package/lib/objectTypes/app.d.ts +3 -0
- package/lib/objectTypes/app.js +2 -2
- package/lib/objectTypes/bankAccount.d.ts +1 -0
- package/lib/objectTypes/connection.d.ts +1 -0
- package/lib/objectTypes/connection.js +2 -2
- package/lib/objectTypes/content.d.ts +2 -0
- package/lib/objectTypes/content.js +2 -0
- package/lib/objectTypes/conversation.d.ts +2 -0
- package/lib/objectTypes/conversation.js +2 -2
- package/lib/objectTypes/creditCard.d.ts +1 -0
- package/lib/objectTypes/document.d.ts +1 -0
- package/lib/objectTypes/error.d.ts +1 -0
- package/lib/objectTypes/external.d.ts +1 -0
- package/lib/objectTypes/external.js +2 -2
- package/lib/objectTypes/file.d.ts +2 -0
- package/lib/objectTypes/file.js +2 -2
- package/lib/objectTypes/filter.d.ts +1 -0
- package/lib/objectTypes/group.d.ts +3 -0
- package/lib/objectTypes/group.js +2 -2
- package/lib/objectTypes/iapSubscription.d.ts +1 -0
- package/lib/objectTypes/image.d.ts +6 -0
- package/lib/objectTypes/image.js +2 -2
- package/lib/objectTypes/index.d.ts +26 -0
- package/lib/objectTypes/index.js +2 -2
- package/lib/objectTypes/location.d.ts +2 -0
- package/lib/objectTypes/location.js +2 -2
- package/lib/objectTypes/message.d.ts +2 -0
- package/lib/objectTypes/message.js +2 -2
- package/lib/objectTypes/passcode.d.ts +1 -0
- package/lib/objectTypes/passcode.js +2 -2
- package/lib/objectTypes/plan.d.ts +2 -0
- package/lib/objectTypes/plan.js +2 -2
- package/lib/objectTypes/post.d.ts +2 -0
- package/lib/objectTypes/post.js +2 -2
- package/lib/objectTypes/profile.d.ts +3 -0
- package/lib/objectTypes/profile.js +2 -2
- package/lib/objectTypes/reaction.d.ts +2 -0
- package/lib/objectTypes/reaction.js +2 -2
- package/lib/objectTypes/relation.d.ts +1 -0
- package/lib/objectTypes/relation.js +2 -2
- package/lib/objectTypes/search.d.ts +1 -0
- package/lib/objectTypes/search.js +2 -2
- package/lib/objectTypes/statistics.d.ts +1 -0
- package/lib/objectTypes/statistics.js +2 -2
- package/lib/objectTypes/subscription.d.ts +2 -0
- package/lib/objectTypes/subscription.js +2 -2
- package/lib/objectTypes/tag.d.ts +2 -0
- package/lib/objectTypes/tag.js +2 -2
- package/lib/objectTypes/user.d.ts +4 -0
- package/lib/objectTypes/user.js +2 -2
- package/lib/queries/content.d.ts +2 -0
- package/lib/queries/content.js +2 -0
- package/lib/queries/index.d.ts +10 -0
- package/lib/queries/index.js +2 -2
- package/lib/queries/locations.d.ts +2 -0
- package/lib/queries/locations.js +2 -2
- package/lib/queries/messages.d.ts +2 -0
- package/lib/queries/messages.js +2 -2
- package/lib/queries/posts.d.ts +2 -0
- package/lib/queries/posts.js +2 -2
- package/lib/queries/reactions.d.ts +2 -0
- package/lib/queries/reactions.js +2 -2
- package/lib/queries/statistics.d.ts +2 -0
- package/lib/queries/statistics.js +2 -2
- package/lib/queries/subscriptions.d.ts +2 -0
- package/lib/queries/subscriptions.js +2 -2
- package/lib/queries/tags.d.ts +2 -0
- package/lib/queries/tags.js +2 -2
- package/lib/queries/users.d.ts +1 -0
- package/lib/queries/users.js +2 -2
- package/lib/templates/email/layout.d.ts +2 -0
- package/lib/templates/email/passwordForgot.d.ts +2 -0
- package/lib/templates/email/passwordRecovery.d.ts +2 -0
- package/lib/templates/email/verifyEmail.d.ts +2 -0
- package/lib/templates/email/welcome.d.ts +2 -0
- package/lib/templates/sms/passwordForgot.d.ts +2 -0
- package/lib/templates/sms/passwordRecovery.d.ts +2 -0
- package/lib/templates/sms/verifyEmail.d.ts +2 -0
- package/lib/templates/sms/verifyPhone.d.ts +2 -0
- package/lib/templates/sms/welcome.d.ts +2 -0
- package/lib/types/apps.types.d.ts +50 -0
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.d.ts +38 -0
- package/lib/types/auth.types.d.ts +15 -0
- package/lib/types/connections.types.d.ts +9 -0
- package/lib/types/content.types.d.ts +31 -0
- package/lib/types/conversations.types.d.ts +31 -0
- package/lib/types/email.types.d.ts +17 -0
- package/lib/types/error.types.d.ts +21 -0
- package/lib/types/files.types.d.ts +27 -0
- package/lib/types/google.types.d.ts +33 -0
- package/lib/types/groups.types.d.ts +22 -0
- package/lib/types/images.types.d.ts +56 -0
- package/lib/types/index.d.ts +26 -0
- package/lib/types/index.js +2 -2
- package/lib/types/locations.types.d.ts +22 -0
- package/lib/types/messages.types.d.ts +20 -0
- package/lib/types/notifications.types.d.ts +23 -0
- package/lib/types/payments.types.d.ts +113 -0
- package/lib/types/posts.types.d.ts +32 -0
- package/lib/types/profiles.types.d.ts +20 -0
- package/lib/types/statistics.types.d.ts +3 -0
- package/lib/types/tags.types.d.ts +19 -0
- package/lib/types/users.types.d.ts +110 -0
- package/lib/types/websockets.types.d.ts +22 -0
- package/lib/utils/adapterUtils.d.ts +5 -0
- package/lib/utils/analyticsUtils.d.ts +25 -0
- package/lib/utils/analyticsUtils.js +2 -2
- package/lib/utils/arangodbUtils.d.ts +70 -0
- package/lib/utils/arangodbUtils.js +3 -3
- package/lib/utils/authUtils.d.ts +23 -0
- package/lib/utils/authUtils.js +2 -2
- package/lib/utils/contextUtils.d.ts +3 -0
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/dbI18n.d.ts +10 -0
- package/lib/utils/dbI18n.example.d.ts +20 -0
- package/lib/utils/dbI18n.example.js +3 -3
- package/lib/utils/dbI18n.js +2 -2
- package/lib/utils/googleTranslate.d.ts +6 -0
- package/lib/utils/googleTranslate.js +2 -2
- package/lib/utils/graphqlUtils.d.ts +10 -0
- package/lib/utils/graphqlUtils.js +2 -2
- package/lib/utils/index.d.ts +18 -0
- package/lib/utils/index.js +2 -2
- package/lib/utils/languageDetection.d.ts +8 -0
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.d.ts +11 -0
- package/lib/utils/localeUtils.example.d.ts +5 -0
- package/lib/utils/localeUtils.example.js +2 -2
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/middlewareUtils.d.ts +2 -0
- package/lib/utils/middlewareUtils.js +2 -2
- package/lib/utils/sessionUtils.d.ts +18 -0
- package/lib/utils/sessionUtils.js +2 -2
- package/lib/utils/stripeUtils.d.ts +7 -0
- package/lib/utils/stripeUtils.js +2 -2
- package/lib/utils/templateUtils.d.ts +3 -0
- package/lib/utils/testUtils.d.ts +95 -0
- package/lib/utils/testUtils.js +2 -2
- package/lib/utils/translationQueue.d.ts +29 -0
- package/lib/utils/translationQueue.example.d.ts +33 -0
- package/lib/utils/translationQueue.example.js +2 -2
- package/lib/utils/translationQueue.js +2 -2
- package/package.json +22 -21
- package/tsconfig.build.json +21 -0
- package/tsconfig.lint.json +33 -0
- package/tsconfig.test.json +31 -0
- package/dist/actions/apps.js +0 -242
- package/dist/actions/connections.js +0 -90
- package/dist/actions/conversations.js +0 -350
- package/dist/actions/dynamodb.js +0 -150
- package/dist/actions/email.js +0 -152
- package/dist/actions/files.js +0 -283
- package/dist/actions/groups.js +0 -292
- package/dist/actions/images.js +0 -735
- package/dist/actions/index.js +0 -66
- package/dist/actions/ios.js +0 -164
- package/dist/actions/locations.js +0 -122
- package/dist/actions/messages.js +0 -208
- package/dist/actions/notifications.js +0 -59
- package/dist/actions/payments.js +0 -497
- package/dist/actions/personas.js +0 -110
- package/dist/actions/posts.js +0 -595
- package/dist/actions/reactions.js +0 -322
- package/dist/actions/s3.js +0 -133
- package/dist/actions/search.js +0 -90
- package/dist/actions/sms.js +0 -108
- package/dist/actions/statistics.js +0 -62
- package/dist/actions/subscription.js +0 -220
- package/dist/actions/tags.js +0 -292
- package/dist/actions/users.js +0 -784
- package/dist/actions/websockets.js +0 -174
- package/dist/adapters/arangoAdapter.js +0 -46
- package/dist/adapters/fileAdapter.js +0 -76
- package/dist/adapters/imageAdapter.js +0 -40
- package/dist/adapters/messageAdapter.js +0 -49
- package/dist/adapters/postAdapter.js +0 -70
- package/dist/adapters/reaktorAdapter.js +0 -44
- package/dist/adapters/tagAdapter.js +0 -50
- package/dist/adapters/userAdapter.js +0 -115
- package/dist/config.js +0 -125
- package/dist/index.js +0 -66
- package/dist/lambdas/actions/websockets.js +0 -132
- package/dist/lambdas/authorizer.js +0 -67
- package/dist/lambdas/connection.js +0 -91
- package/dist/lambdas/utils/message.js +0 -42
- package/dist/lambdas/utils/websocket.js +0 -105
- package/dist/mocks/conversation.js +0 -35
- package/dist/mocks/file.js +0 -38
- package/dist/mocks/group.js +0 -47
- package/dist/mocks/image.js +0 -44
- package/dist/mocks/nlabs.png +0 -0
- package/dist/mocks/post.js +0 -55
- package/dist/mocks/tag.js +0 -37
- package/dist/mocks/user.js +0 -88
- package/dist/mutations/index.js +0 -26
- package/dist/mutations/locations.js +0 -44
- package/dist/mutations/messages.js +0 -86
- package/dist/mutations/personas.js +0 -100
- package/dist/mutations/posts.js +0 -53
- package/dist/mutations/reactions.js +0 -51
- package/dist/mutations/statistics.js +0 -39
- package/dist/mutations/subscriptions.js +0 -56
- package/dist/mutations/tags.js +0 -120
- package/dist/mutations/users.js +0 -116
- package/dist/objectTypes/app.js +0 -173
- package/dist/objectTypes/bankAccount.js +0 -76
- package/dist/objectTypes/connection.js +0 -48
- package/dist/objectTypes/conversation.js +0 -77
- package/dist/objectTypes/creditCard.js +0 -86
- package/dist/objectTypes/document.js +0 -46
- package/dist/objectTypes/error.js +0 -46
- package/dist/objectTypes/external.js +0 -74
- package/dist/objectTypes/file.js +0 -100
- package/dist/objectTypes/filter.js +0 -43
- package/dist/objectTypes/group.js +0 -123
- package/dist/objectTypes/iapSubscription.js +0 -40
- package/dist/objectTypes/image.js +0 -129
- package/dist/objectTypes/index.js +0 -68
- package/dist/objectTypes/location.js +0 -109
- package/dist/objectTypes/message.js +0 -96
- package/dist/objectTypes/passcode.js +0 -42
- package/dist/objectTypes/persona.js +0 -87
- package/dist/objectTypes/plan.js +0 -95
- package/dist/objectTypes/post.js +0 -125
- package/dist/objectTypes/reaction.js +0 -61
- package/dist/objectTypes/relation.js +0 -49
- package/dist/objectTypes/search.js +0 -72
- package/dist/objectTypes/statistics.js +0 -39
- package/dist/objectTypes/subscription.js +0 -117
- package/dist/objectTypes/tag.js +0 -65
- package/dist/objectTypes/user.js +0 -144
- package/dist/queries/index.js +0 -33
- package/dist/queries/locations.js +0 -45
- package/dist/queries/messages.js +0 -52
- package/dist/queries/posts.js +0 -154
- package/dist/queries/reactions.js +0 -56
- package/dist/queries/statistics.js +0 -39
- package/dist/queries/subscriptions.js +0 -44
- package/dist/queries/tags.js +0 -75
- package/dist/queries/users.js +0 -64
- package/dist/templates/email/layout.js +0 -302
- package/dist/templates/email/passwordForgot.js +0 -38
- package/dist/templates/email/passwordRecovery.js +0 -35
- package/dist/templates/email/verifyEmail.js +0 -38
- package/dist/templates/email/welcome.js +0 -38
- package/dist/templates/sms/passwordForgot.js +0 -24
- package/dist/templates/sms/passwordRecovery.js +0 -24
- package/dist/templates/sms/verifyEmail.js +0 -24
- package/dist/templates/sms/verifyPhone.js +0 -24
- package/dist/templates/sms/welcome.js +0 -24
- package/dist/types/apps.js +0 -32
- package/dist/types/arangodb.js +0 -16
- package/dist/types/auth.js +0 -16
- package/dist/types/connections.js +0 -16
- package/dist/types/conversations.js +0 -16
- package/dist/types/email.js +0 -16
- package/dist/types/error.js +0 -44
- package/dist/types/files.js +0 -16
- package/dist/types/google.js +0 -16
- package/dist/types/groups.js +0 -16
- package/dist/types/images.js +0 -16
- package/dist/types/index.js +0 -60
- package/dist/types/locations.js +0 -16
- package/dist/types/messages.js +0 -16
- package/dist/types/notifications.js +0 -16
- package/dist/types/payments.js +0 -16
- package/dist/types/personas.js +0 -16
- package/dist/types/posts.js +0 -16
- package/dist/types/statistics.js +0 -16
- package/dist/types/tags.js +0 -16
- package/dist/types/users.js +0 -16
- package/dist/types/websockets.js +0 -16
- package/dist/utils/adapterUtils.js +0 -45
- package/dist/utils/analyticsUtils.js +0 -72
- package/dist/utils/arangodbUtils.js +0 -165
- package/dist/utils/auth.js +0 -57
- package/dist/utils/index.js +0 -30
- package/dist/utils/session.js +0 -60
- package/jest.config.js +0 -17
- package/jest.setup.js +0 -36
- package/lex.config.cjs +0 -13
- package/lib/mutations/locations.integration.js +0 -2
- package/lib/mutations/messages.integration.js +0 -2
- package/lib/mutations/posts.integration.js +0 -2
- package/lib/mutations/profiles.integration.js +0 -2
- package/lib/mutations/reactions.integration.js +0 -2
- package/lib/mutations/statistics.integration.js +0 -2
- package/lib/mutations/subscriptions.integration.js +0 -2
- package/lib/mutations/tags.integration.js +0 -2
- package/lib/mutations/users.integration.js +0 -2
- package/lib/queries/locations.integration.js +0 -2
- package/lib/queries/messages.integration.js +0 -2
- package/lib/queries/posts.integration.js +0 -2
- package/lib/queries/reactions.integration.js +0 -2
- package/lib/queries/tags.integration.js +0 -2
- package/lib/queries/users.integration.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3RyYW5zbGF0aW9uUXVldWUuZXhhbXBsZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKlxuICogRXhhbXBsZSB1c2FnZSBvZiB0aGUgdHJhbnNsYXRpb24gcXVldWUgc3lzdGVtIHdpdGggR29vZ2xlIFRyYW5zbGF0ZSBpbnRlZ3JhdGlvblxuICpcbiAqIFRoaXMgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIG5ldyB0cmFuc2xhdGlvbiBxdWV1ZSB0aGF0IGF1dG9tYXRpY2FsbHlcbiAqIHRyYW5zbGF0ZXMgY29udGVudCB1c2luZyBHb29nbGUgVHJhbnNsYXRlIEFQSSB3aGVuIG5lZWRlZC5cbiAqL1xuXG5pbXBvcnQge2kxOG4sIGZsdXNoLCB0eXBlIFRyYW5zbGF0aW9uT2JqZWN0fSBmcm9tICcuL3RyYW5zbGF0aW9uUXVldWUnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcyc7XG5pbXBvcnQgdHlwZSB7TG9jYWxlfSBmcm9tICcuLi90eXBlcy9jb250ZW50LnR5cGVzJztcblxuLy8gRXhhbXBsZSAxOiBCYXNpYyB0cmFuc2xhdGlvbnMgLSB3aWxsIHVzZSBkYXRhYmFzZSBvciB0cmFuc2xhdGUgYXMgbmVlZGVkXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V2VsY29tZU1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS50aXRsZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS5zdWJ0aXRsZScsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGVyc29uYWwgQUkgYXNzaXN0YW50J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS5kZXNjcmlwdGlvbicsXG4gICAgICBmYWxsYmFjazogJ0dldCBzdGFydGVkIGJ5IGV4cGxvcmluZyBvdXIgZmVhdHVyZXMnXG4gICAgfVxuICBdO1xuXG4gIC8vIFRoaXMgd2lsbDpcbiAgLy8gMS4gQ2hlY2sgZGF0YWJhc2UgZm9yIGV4aXN0aW5nIHRyYW5zbGF0aW9uc1xuICAvLyAyLiBJZiBub3QgZm91bmQgYW5kIGxvY2FsZSBpcyBkZWZhdWx0IChlbiksIHNhdmUgZmFsbGJhY2sgdG8gREJcbiAgLy8gMy4gSWYgbm90IGZvdW5kIGFuZCBsb2NhbGUgaXMgZGlmZmVyZW50LCB0cmFuc2xhdGUgZnJvbSBkZWZhdWx0IGxvY2FsZVxuICAvLyA0LiBTYXZlIHRyYW5zbGF0ZWQgY29udGVudCB0byBEQiBmb3IgZnV0dXJlIHVzZVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuIChjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbiAgLy8gUmV0dXJuczoge1xuICAvLyAgICd3ZWxjb21lLnRpdGxlJzogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJyAob3IgdHJhbnNsYXRlZCB2ZXJzaW9uKSxcbiAgLy8gICAnd2VsY29tZS5zdWJ0aXRsZSc6ICdZb3VyIHBlcnNvbmFsIEFJIGFzc2lzdGFudCcgKG9yIHRyYW5zbGF0ZWQgdmVyc2lvbiksXG4gIC8vICAgJ3dlbGNvbWUuZGVzY3JpcHRpb24nOiAnR2V0IHN0YXJ0ZWQgYnkgZXhwbG9yaW5nIG91ciBmZWF0dXJlcycgKG9yIHRyYW5zbGF0ZWQgdmVyc2lvbilcbiAgLy8gfVxufVxuXG4vLyBFeGFtcGxlIDI6IFRyYW5zbGF0aW9ucyB3aXRoIGludGVycG9sYXRpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyhjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VybmFtZTogc3RyaW5nLCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ3VzZXIud2VsY29tZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgYmFjaywge3t1c2VybmFtZX19IScsXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VzZXIubm90aWZpY2F0aW9ucycsXG4gICAgICBmYWxsYmFjazogJ1lvdSBoYXZlIHt7Y291bnR9fSBuZXcgbm90aWZpY2F0aW9ucycsXG4gICAgICBwYXJhbXM6IHtjb3VudDogNX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VzZXIubGFzdExvZ2luJyxcbiAgICAgIGZhbGxiYWNrOiAnTGFzdCBsb2dpbjoge3tkYXRlfX0nLFxuICAgICAgcGFyYW1zOiB7ZGF0ZTogbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKX1cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbiAgLy8gUmV0dXJuczoge1xuICAvLyAgICd1c2VyLndlbGNvbWUnOiAnV2VsY29tZSBiYWNrLCBBbGljZSEnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbiksXG4gIC8vICAgJ3VzZXIubm90aWZpY2F0aW9ucyc6ICdZb3UgaGF2ZSA1IG5ldyBub3RpZmljYXRpb25zJyAob3IgdHJhbnNsYXRlZCB3aXRoIGludGVycG9sYXRpb24pLFxuICAvLyAgICd1c2VyLmxhc3RMb2dpbic6ICdMYXN0IGxvZ2luOiAxLzE1LzIwMjUnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbilcbiAgLy8gfVxufVxuXG4vLyBFeGFtcGxlIDM6IE11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRNdWx0aUxhbmd1YWdlQ29udGVudChjb250ZXh0OiBBcGlDb250ZXh0KSB7XG4gIC8vIEdldCBjb250ZW50IGluIG11bHRpcGxlIGxhbmd1YWdlc1xuICBjb25zdCBsYW5ndWFnZXM6IExvY2FsZVtdID0gWydlbicsICdlcycsICdmciddO1xuICBjb25zdCByZXN1bHRzOiBSZWNvcmQ8TG9jYWxlLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9IGFzIGFueTtcblxuICBmb3IoY29uc3QgbG9jYWxlIG9mIGxhbmd1YWdlcykge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwLm5hbWUnLFxuICAgICAgICBmYWxsYmFjazogJ1RvcmNoT25lJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwLnRhZ2xpbmUnLFxuICAgICAgICBmYWxsYmFjazogJ1lvdXIgQUkgQXNzaXN0YW50J1xuICAgICAgfVxuICAgIF07XG5cbiAgICByZXN1bHRzW2xvY2FsZV0gPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xuICAvLyBSZXR1cm5zOiB7XG4gIC8vICAgZW46IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1lvdXIgQUkgQXNzaXN0YW50JyB9LFxuICAvLyAgIGVzOiB7ICdhcHAubmFtZSc6ICdUb3JjaE9uZScsICdhcHAudGFnbGluZSc6ICdUdSBBc2lzdGVudGUgZGUgSUEnIH0sXG4gIC8vICAgZnI6IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1ZvdHJlIEFzc2lzdGFudCBJQScgfVxuICAvLyB9XG59XG5cbi8vIEV4YW1wbGUgNDogRXJyb3IgaGFuZGxpbmcgYW5kIGZhbGxiYWNrc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJvYnVzdFRyYW5zbGF0aW9ucyhjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLm5vdEZvdW5kJyxcbiAgICAgIGZhbGxiYWNrOiAnQ29udGVudCBub3QgZm91bmQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlcnJvci5zZXJ2ZXJFcnJvcicsXG4gICAgICBmYWxsYmFjazogJ1NlcnZlciBlcnJvciBvY2N1cnJlZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N1Y2Nlc3Muc2F2ZWQnLFxuICAgICAgZmFsbGJhY2s6ICdDb250ZW50IHNhdmVkIHN1Y2Nlc3NmdWxseSdcbiAgICB9XG4gIF07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignVHJhbnNsYXRpb24gZXJyb3I6JywgZXJyb3IpO1xuICAgIC8vIFJldHVybiBmYWxsYmFja3MgaWYgdHJhbnNsYXRpb24gZmFpbHNcbiAgICByZXR1cm4gdHJhbnNsYXRpb25zLnJlZHVjZSgoYWNjLCB0KSA9PiB7XG4gICAgICBhY2NbdC5rZXldID0gdC5mYWxsYmFjaztcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gIH1cbn1cblxuLy8gRXhhbXBsZSA1OiBCYXRjaCBwcm9jZXNzaW5nIHdpdGggZmx1c2hcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzTGFyZ2VUcmFuc2xhdGlvbkJhdGNoKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICAvLyBDcmVhdGUgYSBsYXJnZSBiYXRjaCBvZiB0cmFuc2xhdGlvbnNcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW107XG5cbiAgZm9yKGxldCBpID0gMTsgaSA8PSAxMDA7IGkrKykge1xuICAgIHRyYW5zbGF0aW9ucy5wdXNoKHtcbiAgICAgIGtleTogYGl0ZW0uJHtpfS50aXRsZWAsXG4gICAgICBmYWxsYmFjazogYEl0ZW0gJHtpfSBUaXRsZWAsXG4gICAgICBwYXJhbXM6IHtudW1iZXI6IGl9XG4gICAgfSk7XG4gIH1cblxuICAvLyBQcm9jZXNzIHRoZSBiYXRjaFxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICAvLyBFbnN1cmUgYWxsIHBlbmRpbmcgdHJhbnNsYXRpb25zIGFyZSBwcm9jZXNzZWRcbiAgYXdhaXQgZmx1c2goKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBFeGFtcGxlIDY6IEVycm9yIGhhbmRsaW5nIHdpdGggZmFsbGJhY2tzXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlcyhjb250ZXh0OiBBcGlDb250ZXh0LCBlcnJvckNvZGU6IHN0cmluZywgbG9jYWxlOiBMb2NhbGUgPSAnZW4nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6IGBlcnJvci4ke2Vycm9yQ29kZX1gLFxuICAgICAgZmFsbGJhY2s6IGBBbiBlcnJvciBvY2N1cnJlZDogJHtlcnJvckNvZGV9YCxcbiAgICAgIHBhcmFtczoge2Vycm9yQ29kZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLmNvbnRhY3RTdXBwb3J0JyxcbiAgICAgIGZhbGxiYWNrOiAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB0aGlzIHByb2JsZW0gcGVyc2lzdHMuJyxcbiAgICAgIHBhcmFtczoge31cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgLy8gSWYgZGF0YWJhc2UgaXMgdW5hdmFpbGFibGUsIHdpbGwgcmV0dXJuIGZhbGxiYWNrczpcbiAgLy8ge1xuICAvLyAgICdlcnJvci5JTlZBTElEX0VNQUlMJzogJ0FuIGVycm9yIG9jY3VycmVkOiBJTlZBTElEX0VNQUlMJyxcbiAgLy8gICAnZXJyb3IuY29udGFjdFN1cHBvcnQnOiAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB0aGlzIHByb2JsZW0gcGVyc2lzdHMuJ1xuICAvLyB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRXhhbXBsZSA3OiBDb21wbGV4IGVtYWlsIHRlbXBsYXRlIHdpdGggbXVsdGlwbGUgaW50ZXJwb2xhdGlvbnNcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsVGVtcGxhdGUoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHVzZXJEYXRhOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgaXRlbXM6IG51bWJlcjtcbiAgfSxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLnN1YmplY3QnLFxuICAgICAgZmFsbGJhY2s6ICdPcmRlciB7e29yZGVySWR9fSBDb25maXJtZWQnLFxuICAgICAgcGFyYW1zOiB7b3JkZXJJZDogdXNlckRhdGEub3JkZXJJZH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLmdyZWV0aW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnSGVsbG8ge3tuYW1lfX0sJyxcbiAgICAgIHBhcmFtczoge25hbWU6IHVzZXJEYXRhLm5hbWV9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ib2R5JyxcbiAgICAgIGZhbGxiYWNrOiAnWW91ciBvcmRlciB7e29yZGVySWR9fSBoYXMgYmVlbiBjb25maXJtZWQuIFRvdGFsOiAke3t0b3RhbH19IGZvciB7e2l0ZW1zfX0gaXRlbXMuJyxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBvcmRlcklkOiB1c2VyRGF0YS5vcmRlcklkLFxuICAgICAgICB0b3RhbDogdXNlckRhdGEudG90YWwsXG4gICAgICAgIGl0ZW1zOiB1c2VyRGF0YS5pdGVtc1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1haWwub3JkZXJDb25maXJtYXRpb24uZm9vdGVyJyxcbiAgICAgIGZhbGxiYWNrOiAnVGhhbmsgeW91IGZvciB5b3VyIHB1cmNoYXNlISdcbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiByZXN1bHRbJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLnN1YmplY3QnXSxcbiAgICBncmVldGluZzogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ncmVldGluZyddLFxuICAgIGJvZHk6IHJlc3VsdFsnZW1haWwub3JkZXJDb25maXJtYXRpb24uYm9keSddLFxuICAgIGZvb3RlcjogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5mb290ZXInXVxuICB9O1xufVxuXG4vLyBFeGFtcGxlIDg6IE5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgZGlmZmVyZW50IHNjZW5hcmlvc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5vdGlmaWNhdGlvbk1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLndlbGNvbWUnLFxuICAgICAgZmFsbGJhY2s6ICdXZWxjb21lIHRvIFRvcmNoT25lISdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ25vdGlmaWNhdGlvbi52ZXJpZmljYXRpb24nLFxuICAgICAgZmFsbGJhY2s6ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ucGFzc3dvcmRSZXNldCcsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGFzc3dvcmQgaGFzIGJlZW4gcmVzZXQuJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLnByb2ZpbGVVcGRhdGUnLFxuICAgICAgZmFsbGJhY2s6ICdZb3VyIHByb2ZpbGUgaGFzIGJlZW4gdXBkYXRlZC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ubmV3TWVzc2FnZScsXG4gICAgICBmYWxsYmFjazogJ1lvdSBoYXZlIGEgbmV3IG1lc3NhZ2UgZnJvbSB7e3NlbmRlcn19LicsXG4gICAgICBwYXJhbXM6IHtzZW5kZXI6ICdKb2huIERvZSd9XG4gICAgfVxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEV4YW1wbGUgOTogUGVyZm9ybWFuY2UgY29tcGFyaXNvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1hbmNlQ29tcGFyaXNvbihjb250ZXh0OiBBcGlDb250ZXh0KSB7XG4gIGNvbnN0IGtleXMgPSBbXG4gICAgJ3dlbGNvbWUnLCAndmVyaWZpY2F0aW9uJywgJ3Bhc3N3b3JkUmVzZXQnLCAncHJvZmlsZVVwZGF0ZScsXG4gICAgJ2VtYWlsLnN1YmplY3QnLCAnZW1haWwuYm9keScsICdzbXMud2VsY29tZScsICdzbXMudmVyaWZpY2F0aW9uJ1xuICBdO1xuXG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IGtleXMubWFwKChrZXkpID0+ICh7XG4gICAga2V5LFxuICAgIGZhbGxiYWNrOiBgRmFsbGJhY2sgZm9yICR7a2V5fWBcbiAgfSkpO1xuXG4gIGNvbnNvbGUudGltZSgnQmF0Y2ggdHJhbnNsYXRpb24nKTtcbiAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsICdlbicpO1xuICBjb25zb2xlLnRpbWVFbmQoJ0JhdGNoIHRyYW5zbGF0aW9uJyk7XG5cbiAgcmV0dXJuIGJhdGNoUmVzdWx0cztcbn1cblxuLy8gRXhhbXBsZSAxMDogRHluYW1pYyBjb250ZW50IGJhc2VkIG9uIHVzZXIgcHJlZmVyZW5jZXNcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRVc2VyR3JlZXRpbmcoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHVzZXJMb2NhbGU/OiBzdHJpbmcsXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4pIHtcbiAgY29uc3QgbG9jYWxlOiBMb2NhbGUgPSAodXNlckxvY2FsZSBhcyBMb2NhbGUpIHx8ICdlbic7XG5cbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLm1vcm5pbmcnLFxuICAgICAgZmFsbGJhY2s6ICdHb29kIG1vcm5pbmchJyxcbiAgICAgIHBhcmFtczogdXNlcm5hbWUgPyB7dXNlcm5hbWV9IDoge31cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLmFmdGVybm9vbicsXG4gICAgICBmYWxsYmFjazogJ0dvb2QgYWZ0ZXJub29uIScsXG4gICAgICBwYXJhbXM6IHVzZXJuYW1lID8ge3VzZXJuYW1lfSA6IHt9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdncmVldGluZy5ldmVuaW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnR29vZCBldmVuaW5nIScsXG4gICAgICBwYXJhbXM6IHVzZXJuYW1lID8ge3VzZXJuYW1lfSA6IHt9XG4gICAgfVxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIC8vIFJldHVybiBhcHByb3ByaWF0ZSBncmVldGluZyBiYXNlZCBvbiB0aW1lIG9mIGRheVxuICBjb25zdCBob3VyID0gbmV3IERhdGUoKS5nZXRIb3VycygpO1xuICBpZihob3VyIDwgMTIpIHtcbiAgICByZXR1cm4gcmVzdWx0WydncmVldGluZy5tb3JuaW5nJ107XG4gIH1cbiAgaWYoaG91ciA8IDE4KSB7XG4gICAgcmV0dXJuIHJlc3VsdFsnZ3JlZXRpbmcuYWZ0ZXJub29uJ107XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFsnZ3JlZXRpbmcuZXZlbmluZyddO1xufVxuXG4vLyBFeGFtcGxlIDExOiBGb3JjZSBmbHVzaCBwZW5kaW5nIHRyYW5zbGF0aW9uc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCgpIHtcbiAgLy8gRm9yY2UgcHJvY2VzcyBhbnkgcGVuZGluZyB0cmFuc2xhdGlvbiBiYXRjaGVzXG4gIGF3YWl0IGZsdXNoKCk7XG4gIGNvbnNvbGUubG9nKCdBbGwgdHJhbnNsYXRpb24gYmF0Y2hlcyBwcm9jZXNzZWQnKTtcbn1cblxuLy8gVXNhZ2UgZXhhbXBsZXM6XG4vLyBjb25zdCBjb250ZXh0ID0geyBkYXRhYmFzZU5hbWU6ICd0b3JjaG9uZS1kZXYnLCBzZXNzaW9uOiB7IHVzZXJJZDogJ3VzZXIxMjMnIH0gfTtcbi8vXG4vLyAvLyBCYXNpYyB1c2FnZVxuLy8gY29uc3Qgd2VsY29tZU1lc3NhZ2VzID0gYXdhaXQgZ2V0V2VsY29tZU1lc3NhZ2VzKGNvbnRleHQsICdlbicpO1xuLy9cbi8vIC8vIFdpdGggaW50ZXJwb2xhdGlvblxuLy8gY29uc3QgcGVyc29uYWxpemVkTWVzc2FnZXMgPSBhd2FpdCBnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyhjb250ZXh0LCAnSm9obicsICdlcycpO1xuLy9cbi8vIC8vIE11bHRpLWxhbmd1YWdlIGNvbnRlbnRcbi8vIGNvbnN0IG11bHRpTGFuZ3VhZ2VDb250ZW50ID0gYXdhaXQgZ2V0TXVsdGlMYW5ndWFnZUNvbnRlbnQoY29udGV4dCk7XG4vL1xuLy8gLy8gRXJyb3IgaGFuZGxpbmdcbi8vIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBhd2FpdCBnZXRSb2J1c3RUcmFuc2xhdGlvbnMoY29udGV4dCwgJ2RlJyk7XG4vL1xuLy8gLy8gQ29tcGxleCB0ZW1wbGF0ZVxuLy8gY29uc3QgZW1haWxUZW1wbGF0ZSA9IGF3YWl0IGdlbmVyYXRlRW1haWxUZW1wbGF0ZShjb250ZXh0LCB7XG4vLyAgIG5hbWU6ICdNYXJpYScsXG4vLyAgIGVtYWlsOiAnbWFyaWFAZXhhbXBsZS5jb20nLFxuLy8gICBvcmRlcklkOiAnT1JELTEyMycsXG4vLyAgIHRvdGFsOiA5OS45OSxcbi8vICAgaXRlbXM6IDNcbi8vIH0sICdwdCcpO1xuLy9cbi8vIC8vIE5vdGlmaWNhdGlvbnNcbi8vIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBhd2FpdCBnZXROb3RpZmljYXRpb25NZXNzYWdlcyhjb250ZXh0LCAnZnInKTtcbi8vXG4vLyAvLyBQZXJmb3JtYW5jZSB0ZXN0XG4vLyBjb25zdCBwZXJmID0gYXdhaXQgcGVyZm9ybWFuY2VDb21wYXJpc29uKGNvbnRleHQpO1xuLy9cbi8vIC8vIER5bmFtaWMgZ3JlZXRpbmdcbi8vIGNvbnN0IGdyZWV0aW5nID0gYXdhaXQgZ2V0VXNlckdyZWV0aW5nKGNvbnRleHQsICdlbicsICdKb2huJyk7XG4vL1xuLy8gLy8gRm9yY2UgZmx1c2hcbi8vIGF3YWl0IGVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCgpOyJdLAogICJtYXBwaW5ncyI6ICJBQVVBLE9BQVEsUUFBQUEsRUFBTSxTQUFBQyxNQUFvQyxxQkFNbEQsZUFBc0JDLEVBQW1CQyxFQUFxQkMsRUFBaUIsS0FBTSxDQXVCbkYsT0FGZSxNQUFNSixFQUFNRyxFQXBCZSxDQUN4QyxDQUNFLElBQUssZ0JBQ0wsU0FBVSxzQkFDWixFQUNBLENBQ0UsSUFBSyxtQkFDTCxTQUFVLDRCQUNaLEVBQ0EsQ0FDRSxJQUFLLHNCQUNMLFNBQVUsdUNBQ1osQ0FDRixFQU9rREMsQ0FBTSxDQVExRCxDQUdBLGVBQXNCQyxFQUF3QkYsRUFBcUJHLEVBQWtCRixFQUFpQixLQUFNLENBQzFHLE1BQU1HLEVBQW9DLENBQ3hDLENBQ0UsSUFBSyxlQUNMLFNBQVUsOEJBQ1YsT0FBUSxDQUFDLFNBQUFELENBQVEsQ0FDbkIsRUFDQSxDQUNFLElBQUsscUJBQ0wsU0FBVSx1Q0FDVixPQUFRLENBQUMsTUFBTyxDQUFDLENBQ25CLEVBQ0EsQ0FDRSxJQUFLLGlCQUNMLFNBQVUsdUJBQ1YsT0FBUSxDQUFDLEtBQU0sSUFBSSxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FDaEQsQ0FDRixFQUlBLE9BRmUsTUFBTU4sRUFBS0csRUFBU0ksRUFBY0gsQ0FBTSxDQVF6RCxDQUdBLGVBQXNCSSxFQUF3QkwsRUFBcUIsQ0FFakUsTUFBTU0sRUFBc0IsQ0FBQyxLQUFNLEtBQU0sSUFBSSxFQUN2Q0MsRUFBa0QsQ0FBQyxFQUV6RCxVQUFVTixLQUFVSyxFQUFXLENBQzdCLE1BQU1GLEVBQW9DLENBQ3hDLENBQ0UsSUFBSyxXQUNMLFNBQVUsVUFDWixFQUNBLENBQ0UsSUFBSyxjQUNMLFNBQVUsbUJBQ1osQ0FDRixFQUVBRyxFQUFRTixDQUFNLEVBQUksTUFBTUosRUFBS0csRUFBU0ksRUFBY0gsQ0FBTSxDQUM1RCxDQUVBLE9BQU9NLENB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RCxDQUdBLGVBQXNCaUIsRUFDcEJyQixFQUNBc0IsRUFDQW5CLEVBQ0EsQ0FxQkEsTUFBTVUsRUFBUyxNQUFNaEIsRUFBS0csRUFsQmdCLENBQ3hDLENBQ0UsSUFBSyxtQkFDTCxTQUFVLGdCQUNWLE9BQVFHLEVBQVcsQ0FBQyxTQUFBQSxDQUFRLEVBQUksQ0FBQyxDQUNuQyxFQUNBLENBQ0UsSUFBSyxxQkFDTCxTQUFVLGtCQUNWLE9BQVFBLEVBQVcsQ0FBQyxTQUFBQSxDQUFRLEVBQUksQ0FBQyxDQUNuQyxFQUNBLENBQ0UsSUFBSyxtQkFDTCxTQUFVLGdCQUNWLE9BQVFBLEVBQVcsQ0FBQyxTQUFBQSxDQUFRLEVBQUksQ0FBQyxDQUNuQyxDQUNGLEVBbEJ3Qm1CLEdBQXlCLElBb0JNLEVBR2pEQyxFQUFPLElBQUksS0FBSyxFQUFFLFNBQVMsRUFDakMsT0FBR0EsRUFBTyxHQUNEVixFQUFPLGtCQUFrQixFQUUvQlUsRUFBTyxHQUNEVixFQUFPLG9CQUFvQixFQUU3QkEsRUFBTyxrQkFBa0IsQ0FDbEMsQ0FHQSxlQUFzQlcsR0FBaUMsQ0FFckQsTUFBTTFCLEVBQU0sQ0FFZCIsCiAgIm5hbWVzIjogWyJpMThuIiwgImZsdXNoIiwgImdldFdlbGNvbWVNZXNzYWdlcyIsICJjb250ZXh0IiwgImxvY2FsZSIsICJnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyIsICJ1c2VybmFtZSIsICJ0cmFuc2xhdGlvbnMiLCAiZ2V0TXVsdGlMYW5ndWFnZUNvbnRlbnQiLCAibGFuZ3VhZ2VzIiwgInJlc3VsdHMiLCAiZ2V0Um9idXN0VHJhbnNsYXRpb25zIiwgImFjYyIsICJ0IiwgInByb2Nlc3NMYXJnZVRyYW5zbGF0aW9uQmF0Y2giLCAiaSIsICJyZXN1bHQiLCAiZ2V0RXJyb3JNZXNzYWdlcyIsICJlcnJvckNvZGUiLCAiZ2VuZXJhdGVFbWFpbFRlbXBsYXRlIiwgInVzZXJEYXRhIiwgImdldE5vdGlmaWNhdGlvbk1lc3NhZ2VzIiwgInBlcmZvcm1hbmNlQ29tcGFyaXNvbiIsICJrZXkiLCAiZ2V0VXNlckdyZWV0aW5nIiwgInVzZXJMb2NhbGUiLCAiaG91ciIsICJlbnN1cmVBbGxUcmFuc2xhdGlvbnNQcm9jZXNzZWQiXQp9Cg==
|
|
1
|
+
import{flush as l,i18n as r}from"./translationQueue.js";async function f(o,t="en"){return await r(o,[{key:"welcome.title",fallback:"Welcome to TorchOne!"},{key:"welcome.subtitle",fallback:"Your personal AI assistant"},{key:"welcome.description",fallback:"Get started by exploring our features"}],t)}async function u(o,t,e="en"){const n=[{key:"user.welcome",fallback:"Welcome back, {{username}}!",params:{username:t}},{key:"user.notifications",fallback:"You have {{count}} new notifications",params:{count:5}},{key:"user.lastLogin",fallback:"Last login: {{date}}",params:{date:new Date().toLocaleDateString()}}];return await r(o,n,e)}async function m(o){const t=["en","es","fr"],e={};for(const n of t){const a=[{key:"app.name",fallback:"TorchOne"},{key:"app.tagline",fallback:"Your AI Assistant"}];e[n]=await r(o,a,n)}return e}async function p(o,t="en"){const e=[{key:"error.notFound",fallback:"Content not found"},{key:"error.serverError",fallback:"Server error occurred"},{key:"success.saved",fallback:"Content saved successfully"}];try{return await r(o,e,t)}catch{return e.reduce((a,s)=>(a[s.key]=s.fallback||"",a),{})}}async function b(o,t="en"){const e=[];for(let a=1;a<=100;a++)e.push({key:`item.${a}.title`,fallback:`Item ${a} Title`,params:{number:a}});const n=await r(o,e,t);return await l(),n}async function g(o,t,e="en"){const n=[{key:`error.${t}`,fallback:`An error occurred: ${t}`,params:{errorCode:t}},{key:"error.contactSupport",fallback:"Please contact support if this problem persists.",params:{}}];return await r(o,n,e)}async function k(o,t,e="en"){const n=[{key:"email.orderConfirmation.subject",fallback:"Order {{orderId}} Confirmed",params:{orderId:t.orderId}},{key:"email.orderConfirmation.greeting",fallback:"Hello {{name}},",params:{name:t.name}},{key:"email.orderConfirmation.body",fallback:"Your order {{orderId}} has been confirmed. Total: ${{total}} for {{items}} items.",params:{orderId:t.orderId,total:t.total,items:t.items}},{key:"email.orderConfirmation.footer",fallback:"Thank you for your purchase!"}],a=await r(o,n,e);return{subject:a["email.orderConfirmation.subject"],greeting:a["email.orderConfirmation.greeting"],body:a["email.orderConfirmation.body"],footer:a["email.orderConfirmation.footer"]}}async function d(o,t="en"){return await r(o,[{key:"notification.welcome",fallback:"Welcome to TorchOne!"},{key:"notification.verification",fallback:"Please verify your account."},{key:"notification.passwordReset",fallback:"Your password has been reset."},{key:"notification.profileUpdate",fallback:"Your profile has been updated."},{key:"notification.newMessage",fallback:"You have a new message from {{sender}}.",params:{sender:"John Doe"}}],t)}async function y(o){const e=["welcome","verification","passwordReset","profileUpdate","email.subject","email.body","sms.welcome","sms.verification"].map(a=>({key:a,fallback:`Fallback for ${a}`}));return await r(o,e,"en")}async function w(o,t,e){const s=await r(o,[{key:"greeting.morning",fallback:"Good morning!",params:e?{username:e}:{}},{key:"greeting.afternoon",fallback:"Good afternoon!",params:e?{username:e}:{}},{key:"greeting.evening",fallback:"Good evening!",params:e?{username:e}:{}}],t||"en"),i=new Date().getHours();return i<12?s["greeting.morning"]:i<18?s["greeting.afternoon"]:s["greeting.evening"]}async function h(){await l()}export{h as ensureAllTranslationsProcessed,k as generateEmailTemplate,g as getErrorMessages,m as getMultiLanguageContent,d as getNotificationMessages,u as getPersonalizedMessages,p as getRobustTranslations,w as getUserGreeting,f as getWelcomeMessages,y as performanceComparison,b as processLargeTranslationBatch};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3RyYW5zbGF0aW9uUXVldWUuZXhhbXBsZS50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjUtUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKlxuICogRXhhbXBsZSB1c2FnZSBvZiB0aGUgdHJhbnNsYXRpb24gcXVldWUgc3lzdGVtIHdpdGggR29vZ2xlIFRyYW5zbGF0ZSBpbnRlZ3JhdGlvblxuICpcbiAqIFRoaXMgZGVtb25zdHJhdGVzIGhvdyB0byB1c2UgdGhlIG5ldyB0cmFuc2xhdGlvbiBxdWV1ZSB0aGF0IGF1dG9tYXRpY2FsbHlcbiAqIHRyYW5zbGF0ZXMgY29udGVudCB1c2luZyBHb29nbGUgVHJhbnNsYXRlIEFQSSB3aGVuIG5lZWRlZC5cbiAqL1xuXG5pbXBvcnQge2ZsdXNoLCBpMThuLCB0eXBlIFRyYW5zbGF0aW9uT2JqZWN0fSBmcm9tICcuL3RyYW5zbGF0aW9uUXVldWUuanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7TG9jYWxlfSBmcm9tICcuLi90eXBlcy9jb250ZW50LnR5cGVzLmpzJztcblxuLy8gRXhhbXBsZSAxOiBCYXNpYyB0cmFuc2xhdGlvbnMgLSB3aWxsIHVzZSBkYXRhYmFzZSBvciB0cmFuc2xhdGUgYXMgbmVlZGVkXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0V2VsY29tZU1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS50aXRsZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS5zdWJ0aXRsZScsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGVyc29uYWwgQUkgYXNzaXN0YW50J1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnd2VsY29tZS5kZXNjcmlwdGlvbicsXG4gICAgICBmYWxsYmFjazogJ0dldCBzdGFydGVkIGJ5IGV4cGxvcmluZyBvdXIgZmVhdHVyZXMnXG4gICAgfVxuICBdO1xuXG4gIC8vIFRoaXMgd2lsbDpcbiAgLy8gMS4gQ2hlY2sgZGF0YWJhc2UgZm9yIGV4aXN0aW5nIHRyYW5zbGF0aW9uc1xuICAvLyAyLiBJZiBub3QgZm91bmQgYW5kIGxvY2FsZSBpcyBkZWZhdWx0IChlbiksIHNhdmUgZmFsbGJhY2sgdG8gREJcbiAgLy8gMy4gSWYgbm90IGZvdW5kIGFuZCBsb2NhbGUgaXMgZGlmZmVyZW50LCB0cmFuc2xhdGUgZnJvbSBkZWZhdWx0IGxvY2FsZVxuICAvLyA0LiBTYXZlIHRyYW5zbGF0ZWQgY29udGVudCB0byBEQiBmb3IgZnV0dXJlIHVzZVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuIChjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbiAgLy8gUmV0dXJuczoge1xuICAvLyAgICd3ZWxjb21lLnRpdGxlJzogJ1dlbGNvbWUgdG8gVG9yY2hPbmUhJyAob3IgdHJhbnNsYXRlZCB2ZXJzaW9uKSxcbiAgLy8gICAnd2VsY29tZS5zdWJ0aXRsZSc6ICdZb3VyIHBlcnNvbmFsIEFJIGFzc2lzdGFudCcgKG9yIHRyYW5zbGF0ZWQgdmVyc2lvbiksXG4gIC8vICAgJ3dlbGNvbWUuZGVzY3JpcHRpb24nOiAnR2V0IHN0YXJ0ZWQgYnkgZXhwbG9yaW5nIG91ciBmZWF0dXJlcycgKG9yIHRyYW5zbGF0ZWQgdmVyc2lvbilcbiAgLy8gfVxufVxuXG4vLyBFeGFtcGxlIDI6IFRyYW5zbGF0aW9ucyB3aXRoIGludGVycG9sYXRpb25cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyhjb250ZXh0OiBBcGlDb250ZXh0LCB1c2VybmFtZTogc3RyaW5nLCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ3VzZXIud2VsY29tZScsXG4gICAgICBmYWxsYmFjazogJ1dlbGNvbWUgYmFjaywge3t1c2VybmFtZX19IScsXG4gICAgICBwYXJhbXM6IHt1c2VybmFtZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VzZXIubm90aWZpY2F0aW9ucycsXG4gICAgICBmYWxsYmFjazogJ1lvdSBoYXZlIHt7Y291bnR9fSBuZXcgbm90aWZpY2F0aW9ucycsXG4gICAgICBwYXJhbXM6IHtjb3VudDogNX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3VzZXIubGFzdExvZ2luJyxcbiAgICAgIGZhbGxiYWNrOiAnTGFzdCBsb2dpbjoge3tkYXRlfX0nLFxuICAgICAgcGFyYW1zOiB7ZGF0ZTogbmV3IERhdGUoKS50b0xvY2FsZURhdGVTdHJpbmcoKX1cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbiAgLy8gUmV0dXJuczoge1xuICAvLyAgICd1c2VyLndlbGNvbWUnOiAnV2VsY29tZSBiYWNrLCBBbGljZSEnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbiksXG4gIC8vICAgJ3VzZXIubm90aWZpY2F0aW9ucyc6ICdZb3UgaGF2ZSA1IG5ldyBub3RpZmljYXRpb25zJyAob3IgdHJhbnNsYXRlZCB3aXRoIGludGVycG9sYXRpb24pLFxuICAvLyAgICd1c2VyLmxhc3RMb2dpbic6ICdMYXN0IGxvZ2luOiAxLzE1LzIwMjUnIChvciB0cmFuc2xhdGVkIHdpdGggaW50ZXJwb2xhdGlvbilcbiAgLy8gfVxufVxuXG4vLyBFeGFtcGxlIDM6IE11bHRpLWxhbmd1YWdlIHN1cHBvcnRcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRNdWx0aUxhbmd1YWdlQ29udGVudChjb250ZXh0OiBBcGlDb250ZXh0KSB7XG4gIC8vIEdldCBjb250ZW50IGluIG11bHRpcGxlIGxhbmd1YWdlc1xuICBjb25zdCBsYW5ndWFnZXM6IExvY2FsZVtdID0gWydlbicsICdlcycsICdmciddO1xuICBjb25zdCByZXN1bHRzOiBSZWNvcmQ8TG9jYWxlLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9IHt9IGFzIGFueTtcblxuICBmb3IoY29uc3QgbG9jYWxlIG9mIGxhbmd1YWdlcykge1xuICAgIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwLm5hbWUnLFxuICAgICAgICBmYWxsYmFjazogJ1RvcmNoT25lJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnYXBwLnRhZ2xpbmUnLFxuICAgICAgICBmYWxsYmFjazogJ1lvdXIgQUkgQXNzaXN0YW50J1xuICAgICAgfVxuICAgIF07XG5cbiAgICByZXN1bHRzW2xvY2FsZV0gPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xuICAvLyBSZXR1cm5zOiB7XG4gIC8vICAgZW46IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1lvdXIgQUkgQXNzaXN0YW50JyB9LFxuICAvLyAgIGVzOiB7ICdhcHAubmFtZSc6ICdUb3JjaE9uZScsICdhcHAudGFnbGluZSc6ICdUdSBBc2lzdGVudGUgZGUgSUEnIH0sXG4gIC8vICAgZnI6IHsgJ2FwcC5uYW1lJzogJ1RvcmNoT25lJywgJ2FwcC50YWdsaW5lJzogJ1ZvdHJlIEFzc2lzdGFudCBJQScgfVxuICAvLyB9XG59XG5cbi8vIEV4YW1wbGUgNDogRXJyb3IgaGFuZGxpbmcgYW5kIGZhbGxiYWNrc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFJvYnVzdFRyYW5zbGF0aW9ucyhjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhbGU6IExvY2FsZSA9ICdlbicpIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLm5vdEZvdW5kJyxcbiAgICAgIGZhbGxiYWNrOiAnQ29udGVudCBub3QgZm91bmQnXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlcnJvci5zZXJ2ZXJFcnJvcicsXG4gICAgICBmYWxsYmFjazogJ1NlcnZlciBlcnJvciBvY2N1cnJlZCdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ3N1Y2Nlc3Muc2F2ZWQnLFxuICAgICAgZmFsbGJhY2s6ICdDb250ZW50IHNhdmVkIHN1Y2Nlc3NmdWxseSdcbiAgICB9XG4gIF07XG5cbiAgdHJ5IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignVHJhbnNsYXRpb24gZXJyb3I6JywgZXJyb3IpO1xuICAgIC8vIFJldHVybiBmYWxsYmFja3MgaWYgdHJhbnNsYXRpb24gZmFpbHNcbiAgICByZXR1cm4gdHJhbnNsYXRpb25zLnJlZHVjZSgoYWNjLCB0KSA9PiB7XG4gICAgICBhY2NbdC5rZXldID0gdC5mYWxsYmFjayB8fCAnJztcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30gYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPik7XG4gIH1cbn1cblxuLy8gRXhhbXBsZSA1OiBCYXRjaCBwcm9jZXNzaW5nIHdpdGggZmx1c2hcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzTGFyZ2VUcmFuc2xhdGlvbkJhdGNoKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICAvLyBDcmVhdGUgYSBsYXJnZSBiYXRjaCBvZiB0cmFuc2xhdGlvbnNcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW107XG5cbiAgZm9yKGxldCBpID0gMTsgaSA8PSAxMDA7IGkrKykge1xuICAgIHRyYW5zbGF0aW9ucy5wdXNoKHtcbiAgICAgIGtleTogYGl0ZW0uJHtpfS50aXRsZWAsXG4gICAgICBmYWxsYmFjazogYEl0ZW0gJHtpfSBUaXRsZWAsXG4gICAgICBwYXJhbXM6IHtudW1iZXI6IGl9XG4gICAgfSk7XG4gIH1cblxuICAvLyBQcm9jZXNzIHRoZSBiYXRjaFxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBpMThuKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuICAvLyBFbnN1cmUgYWxsIHBlbmRpbmcgdHJhbnNsYXRpb25zIGFyZSBwcm9jZXNzZWRcbiAgYXdhaXQgZmx1c2goKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBFeGFtcGxlIDY6IEVycm9yIGhhbmRsaW5nIHdpdGggZmFsbGJhY2tzXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlcyhjb250ZXh0OiBBcGlDb250ZXh0LCBlcnJvckNvZGU6IHN0cmluZywgbG9jYWxlOiBMb2NhbGUgPSAnZW4nKSB7XG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IFtcbiAgICB7XG4gICAgICBrZXk6IGBlcnJvci4ke2Vycm9yQ29kZX1gLFxuICAgICAgZmFsbGJhY2s6IGBBbiBlcnJvciBvY2N1cnJlZDogJHtlcnJvckNvZGV9YCxcbiAgICAgIHBhcmFtczoge2Vycm9yQ29kZX1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2Vycm9yLmNvbnRhY3RTdXBwb3J0JyxcbiAgICAgIGZhbGxiYWNrOiAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB0aGlzIHByb2JsZW0gcGVyc2lzdHMuJyxcbiAgICAgIHBhcmFtczoge31cbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgLy8gSWYgZGF0YWJhc2UgaXMgdW5hdmFpbGFibGUsIHdpbGwgcmV0dXJuIGZhbGxiYWNrczpcbiAgLy8ge1xuICAvLyAgICdlcnJvci5JTlZBTElEX0VNQUlMJzogJ0FuIGVycm9yIG9jY3VycmVkOiBJTlZBTElEX0VNQUlMJyxcbiAgLy8gICAnZXJyb3IuY29udGFjdFN1cHBvcnQnOiAnUGxlYXNlIGNvbnRhY3Qgc3VwcG9ydCBpZiB0aGlzIHByb2JsZW0gcGVyc2lzdHMuJ1xuICAvLyB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gRXhhbXBsZSA3OiBDb21wbGV4IGVtYWlsIHRlbXBsYXRlIHdpdGggbXVsdGlwbGUgaW50ZXJwb2xhdGlvbnNcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZW5lcmF0ZUVtYWlsVGVtcGxhdGUoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHVzZXJEYXRhOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgb3JkZXJJZDogc3RyaW5nO1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgaXRlbXM6IG51bWJlcjtcbiAgfSxcbiAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4pIHtcbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLnN1YmplY3QnLFxuICAgICAgZmFsbGJhY2s6ICdPcmRlciB7e29yZGVySWR9fSBDb25maXJtZWQnLFxuICAgICAgcGFyYW1zOiB7b3JkZXJJZDogdXNlckRhdGEub3JkZXJJZH1cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLmdyZWV0aW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnSGVsbG8ge3tuYW1lfX0sJyxcbiAgICAgIHBhcmFtczoge25hbWU6IHVzZXJEYXRhLm5hbWV9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ib2R5JyxcbiAgICAgIGZhbGxiYWNrOiAnWW91ciBvcmRlciB7e29yZGVySWR9fSBoYXMgYmVlbiBjb25maXJtZWQuIFRvdGFsOiAke3t0b3RhbH19IGZvciB7e2l0ZW1zfX0gaXRlbXMuJyxcbiAgICAgIHBhcmFtczoge1xuICAgICAgICBvcmRlcklkOiB1c2VyRGF0YS5vcmRlcklkLFxuICAgICAgICB0b3RhbDogdXNlckRhdGEudG90YWwsXG4gICAgICAgIGl0ZW1zOiB1c2VyRGF0YS5pdGVtc1xuICAgICAgfVxuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnZW1haWwub3JkZXJDb25maXJtYXRpb24uZm9vdGVyJyxcbiAgICAgIGZhbGxiYWNrOiAnVGhhbmsgeW91IGZvciB5b3VyIHB1cmNoYXNlISdcbiAgICB9XG4gIF07XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdWJqZWN0OiByZXN1bHRbJ2VtYWlsLm9yZGVyQ29uZmlybWF0aW9uLnN1YmplY3QnXSxcbiAgICBncmVldGluZzogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5ncmVldGluZyddLFxuICAgIGJvZHk6IHJlc3VsdFsnZW1haWwub3JkZXJDb25maXJtYXRpb24uYm9keSddLFxuICAgIGZvb3RlcjogcmVzdWx0WydlbWFpbC5vcmRlckNvbmZpcm1hdGlvbi5mb290ZXInXVxuICB9O1xufVxuXG4vLyBFeGFtcGxlIDg6IE5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgZGlmZmVyZW50IHNjZW5hcmlvc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldE5vdGlmaWNhdGlvbk1lc3NhZ2VzKGNvbnRleHQ6IEFwaUNvbnRleHQsIGxvY2FsZTogTG9jYWxlID0gJ2VuJykge1xuICBjb25zdCB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10gPSBbXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLndlbGNvbWUnLFxuICAgICAgZmFsbGJhY2s6ICdXZWxjb21lIHRvIFRvcmNoT25lISdcbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ25vdGlmaWNhdGlvbi52ZXJpZmljYXRpb24nLFxuICAgICAgZmFsbGJhY2s6ICdQbGVhc2UgdmVyaWZ5IHlvdXIgYWNjb3VudC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ucGFzc3dvcmRSZXNldCcsXG4gICAgICBmYWxsYmFjazogJ1lvdXIgcGFzc3dvcmQgaGFzIGJlZW4gcmVzZXQuJ1xuICAgIH0sXG4gICAge1xuICAgICAga2V5OiAnbm90aWZpY2F0aW9uLnByb2ZpbGVVcGRhdGUnLFxuICAgICAgZmFsbGJhY2s6ICdZb3VyIHByb2ZpbGUgaGFzIGJlZW4gdXBkYXRlZC4nXG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdub3RpZmljYXRpb24ubmV3TWVzc2FnZScsXG4gICAgICBmYWxsYmFjazogJ1lvdSBoYXZlIGEgbmV3IG1lc3NhZ2UgZnJvbSB7e3NlbmRlcn19LicsXG4gICAgICBwYXJhbXM6IHtzZW5kZXI6ICdKb2huIERvZSd9XG4gICAgfVxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8vIEV4YW1wbGUgOTogUGVyZm9ybWFuY2UgY29tcGFyaXNvblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1hbmNlQ29tcGFyaXNvbihjb250ZXh0OiBBcGlDb250ZXh0KSB7XG4gIGNvbnN0IGtleXMgPSBbXG4gICAgJ3dlbGNvbWUnLCAndmVyaWZpY2F0aW9uJywgJ3Bhc3N3b3JkUmVzZXQnLCAncHJvZmlsZVVwZGF0ZScsXG4gICAgJ2VtYWlsLnN1YmplY3QnLCAnZW1haWwuYm9keScsICdzbXMud2VsY29tZScsICdzbXMudmVyaWZpY2F0aW9uJ1xuICBdO1xuXG4gIGNvbnN0IHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSA9IGtleXMubWFwKChrZXkpID0+ICh7XG4gICAga2V5LFxuICAgIGZhbGxiYWNrOiBgRmFsbGJhY2sgZm9yICR7a2V5fWBcbiAgfSkpO1xuXG4gIGNvbnNvbGUudGltZSgnQmF0Y2ggdHJhbnNsYXRpb24nKTtcbiAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgaTE4bihjb250ZXh0LCB0cmFuc2xhdGlvbnMsICdlbicpO1xuICBjb25zb2xlLnRpbWVFbmQoJ0JhdGNoIHRyYW5zbGF0aW9uJyk7XG5cbiAgcmV0dXJuIGJhdGNoUmVzdWx0cztcbn1cblxuLy8gRXhhbXBsZSAxMDogRHluYW1pYyBjb250ZW50IGJhc2VkIG9uIHVzZXIgcHJlZmVyZW5jZXNcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRVc2VyR3JlZXRpbmcoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHVzZXJMb2NhbGU/OiBzdHJpbmcsXG4gIHVzZXJuYW1lPzogc3RyaW5nXG4pIHtcbiAgY29uc3QgbG9jYWxlOiBMb2NhbGUgPSAodXNlckxvY2FsZSBhcyBMb2NhbGUpIHx8ICdlbic7XG5cbiAgY29uc3QgdHJhbnNsYXRpb25zOiBUcmFuc2xhdGlvbk9iamVjdFtdID0gW1xuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLm1vcm5pbmcnLFxuICAgICAgZmFsbGJhY2s6ICdHb29kIG1vcm5pbmchJyxcbiAgICAgIHBhcmFtczogdXNlcm5hbWUgPyB7dXNlcm5hbWV9IDoge31cbiAgICB9LFxuICAgIHtcbiAgICAgIGtleTogJ2dyZWV0aW5nLmFmdGVybm9vbicsXG4gICAgICBmYWxsYmFjazogJ0dvb2QgYWZ0ZXJub29uIScsXG4gICAgICBwYXJhbXM6IHVzZXJuYW1lID8ge3VzZXJuYW1lfSA6IHt9XG4gICAgfSxcbiAgICB7XG4gICAgICBrZXk6ICdncmVldGluZy5ldmVuaW5nJyxcbiAgICAgIGZhbGxiYWNrOiAnR29vZCBldmVuaW5nIScsXG4gICAgICBwYXJhbXM6IHVzZXJuYW1lID8ge3VzZXJuYW1lfSA6IHt9XG4gICAgfVxuICBdO1xuXG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGkxOG4oY29udGV4dCwgdHJhbnNsYXRpb25zLCBsb2NhbGUpO1xuXG4gIC8vIFJldHVybiBhcHByb3ByaWF0ZSBncmVldGluZyBiYXNlZCBvbiB0aW1lIG9mIGRheVxuICBjb25zdCBob3VyID0gbmV3IERhdGUoKS5nZXRIb3VycygpO1xuICBpZihob3VyIDwgMTIpIHtcbiAgICByZXR1cm4gcmVzdWx0WydncmVldGluZy5tb3JuaW5nJ107XG4gIH1cbiAgaWYoaG91ciA8IDE4KSB7XG4gICAgcmV0dXJuIHJlc3VsdFsnZ3JlZXRpbmcuYWZ0ZXJub29uJ107XG4gIH1cbiAgcmV0dXJuIHJlc3VsdFsnZ3JlZXRpbmcuZXZlbmluZyddO1xufVxuXG4vLyBFeGFtcGxlIDExOiBGb3JjZSBmbHVzaCBwZW5kaW5nIHRyYW5zbGF0aW9uc1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCgpIHtcbiAgLy8gRm9yY2UgcHJvY2VzcyBhbnkgcGVuZGluZyB0cmFuc2xhdGlvbiBiYXRjaGVzXG4gIGF3YWl0IGZsdXNoKCk7XG4gIGNvbnNvbGUubG9nKCdBbGwgdHJhbnNsYXRpb24gYmF0Y2hlcyBwcm9jZXNzZWQnKTtcbn1cblxuLy8gVXNhZ2UgZXhhbXBsZXM6XG4vLyBjb25zdCBjb250ZXh0ID0geyBkYXRhYmFzZU5hbWU6ICd0b3JjaG9uZS1kZXYnLCBzZXNzaW9uOiB7IHVzZXJJZDogJ3VzZXIxMjMnIH0gfTtcbi8vXG4vLyAvLyBCYXNpYyB1c2FnZVxuLy8gY29uc3Qgd2VsY29tZU1lc3NhZ2VzID0gYXdhaXQgZ2V0V2VsY29tZU1lc3NhZ2VzKGNvbnRleHQsICdlbicpO1xuLy9cbi8vIC8vIFdpdGggaW50ZXJwb2xhdGlvblxuLy8gY29uc3QgcGVyc29uYWxpemVkTWVzc2FnZXMgPSBhd2FpdCBnZXRQZXJzb25hbGl6ZWRNZXNzYWdlcyhjb250ZXh0LCAnSm9obicsICdlcycpO1xuLy9cbi8vIC8vIE11bHRpLWxhbmd1YWdlIGNvbnRlbnRcbi8vIGNvbnN0IG11bHRpTGFuZ3VhZ2VDb250ZW50ID0gYXdhaXQgZ2V0TXVsdGlMYW5ndWFnZUNvbnRlbnQoY29udGV4dCk7XG4vL1xuLy8gLy8gRXJyb3IgaGFuZGxpbmdcbi8vIGNvbnN0IGVycm9yTWVzc2FnZXMgPSBhd2FpdCBnZXRSb2J1c3RUcmFuc2xhdGlvbnMoY29udGV4dCwgJ2RlJyk7XG4vL1xuLy8gLy8gQ29tcGxleCB0ZW1wbGF0ZVxuLy8gY29uc3QgZW1haWxUZW1wbGF0ZSA9IGF3YWl0IGdlbmVyYXRlRW1haWxUZW1wbGF0ZShjb250ZXh0LCB7XG4vLyAgIG5hbWU6ICdNYXJpYScsXG4vLyAgIGVtYWlsOiAnbWFyaWFAZXhhbXBsZS5jb20nLFxuLy8gICBvcmRlcklkOiAnT1JELTEyMycsXG4vLyAgIHRvdGFsOiA5OS45OSxcbi8vICAgaXRlbXM6IDNcbi8vIH0sICdwdCcpO1xuLy9cbi8vIC8vIE5vdGlmaWNhdGlvbnNcbi8vIGNvbnN0IG5vdGlmaWNhdGlvbnMgPSBhd2FpdCBnZXROb3RpZmljYXRpb25NZXNzYWdlcyhjb250ZXh0LCAnZnInKTtcbi8vXG4vLyAvLyBQZXJmb3JtYW5jZSB0ZXN0XG4vLyBjb25zdCBwZXJmID0gYXdhaXQgcGVyZm9ybWFuY2VDb21wYXJpc29uKGNvbnRleHQpO1xuLy9cbi8vIC8vIER5bmFtaWMgZ3JlZXRpbmdcbi8vIGNvbnN0IGdyZWV0aW5nID0gYXdhaXQgZ2V0VXNlckdyZWV0aW5nKGNvbnRleHQsICdlbicsICdKb2huJyk7XG4vL1xuLy8gLy8gRm9yY2UgZmx1c2hcbi8vIGF3YWl0IGVuc3VyZUFsbFRyYW5zbGF0aW9uc1Byb2Nlc3NlZCgpOyJdLAogICJtYXBwaW5ncyI6ICJBQVVBLE9BQVEsU0FBQUEsRUFBTyxRQUFBQyxNQUFtQyx3QkFNbEQsZUFBc0JDLEVBQW1CQyxFQUFxQkMsRUFBaUIsS0FBTSxDQXVCbkYsT0FGZSxNQUFNSCxFQUFNRSxFQXBCZSxDQUN4QyxDQUNFLElBQUssZ0JBQ0wsU0FBVSxzQkFDWixFQUNBLENBQ0UsSUFBSyxtQkFDTCxTQUFVLDRCQUNaLEVBQ0EsQ0FDRSxJQUFLLHNCQUNMLFNBQVUsdUNBQ1osQ0FDRixFQU9rREMsQ0FBTSxDQVExRCxDQUdBLGVBQXNCQyxFQUF3QkYsRUFBcUJHLEVBQWtCRixFQUFpQixLQUFNLENBQzFHLE1BQU1HLEVBQW9DLENBQ3hDLENBQ0UsSUFBSyxlQUNMLFNBQVUsOEJBQ1YsT0FBUSxDQUFDLFNBQUFELENBQVEsQ0FDbkIsRUFDQSxDQUNFLElBQUsscUJBQ0wsU0FBVSx1Q0FDVixPQUFRLENBQUMsTUFBTyxDQUFDLENBQ25CLEVBQ0EsQ0FDRSxJQUFLLGlCQUNMLFNBQVUsdUJBQ1YsT0FBUSxDQUFDLEtBQU0sSUFBSSxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FDaEQsQ0FDRixFQUlBLE9BRmUsTUFBTUwsRUFBS0UsRUFBU0ksRUFBY0gsQ0FBTSxDQVF6RCxDQUdBLGVBQXNCSSxFQUF3QkwsRUFBcUIsQ0FFakUsTUFBTU0sRUFBc0IsQ0FBQyxLQUFNLEtBQU0sSUFBSSxFQUN2Q0MsRUFBa0QsQ0FBQyxFQUV6RCxVQUFVTixLQUFVSyxFQUFXLENBQzdCLE1BQU1GLEVBQW9DLENBQ3hDLENBQ0UsSUFBSyxXQUNMLFNBQVUsVUFDWixFQUNBLENBQ0UsSUFBSyxjQUNMLFNBQVUsbUJBQ1osQ0FDRixFQUVBRyxFQUFRTixDQUFNLEVBQUksTUFBTUgsRUFBS0UsRUFBU0ksRUFBY0gsQ0FBTSxDQUM1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RUFBU0ksRUFBYyxJQUFJLENBSTdELENBR0EsZUFBc0JpQixFQUNwQnJCLEVBQ0FzQixFQUNBbkIsRUFDQSxDQXFCQSxNQUFNVSxFQUFTLE1BQU1mLEVBQUtFLEVBbEJnQixDQUN4QyxDQUNFLElBQUssbUJBQ0wsU0FBVSxnQkFDVixPQUFRRyxFQUFXLENBQUMsU0FBQUEsQ0FBUSxFQUFJLENBQUMsQ0FDbkMsRUFDQSxDQUNFLElBQUsscUJBQ0wsU0FBVSxrQkFDVixPQUFRQSxFQUFXLENBQUMsU0FBQUEsQ0FBUSxFQUFJLENBQUMsQ0FDbkMsRUFDQSxDQUNFLElBQUssbUJBQ0wsU0FBVSxnQkFDVixPQUFRQSxFQUFXLENBQUMsU0FBQUEsQ0FBUSxFQUFJLENBQUMsQ0FDbkMsQ0FDRixFQWxCd0JtQixHQUF5QixJQW9CTSxFQUdqREMsRUFBTyxJQUFJLEtBQUssRUFBRSxTQUFTLEVBQ2pDLE9BQUdBLEVBQU8sR0FDRFYsRUFBTyxrQkFBa0IsRUFFL0JVLEVBQU8sR0FDRFYsRUFBTyxvQkFBb0IsRUFFN0JBLEVBQU8sa0JBQWtCLENBQ2xDLENBR0EsZUFBc0JXLEdBQWlDLENBRXJELE1BQU0zQixFQUFNLENBRWQiLAogICJuYW1lcyI6IFsiZmx1c2giLCAiaTE4biIsICJnZXRXZWxjb21lTWVzc2FnZXMiLCAiY29udGV4dCIsICJsb2NhbGUiLCAiZ2V0UGVyc29uYWxpemVkTWVzc2FnZXMiLCAidXNlcm5hbWUiLCAidHJhbnNsYXRpb25zIiwgImdldE11bHRpTGFuZ3VhZ2VDb250ZW50IiwgImxhbmd1YWdlcyIsICJyZXN1bHRzIiwgImdldFJvYnVzdFRyYW5zbGF0aW9ucyIsICJhY2MiLCAidCIsICJwcm9jZXNzTGFyZ2VUcmFuc2xhdGlvbkJhdGNoIiwgImkiLCAicmVzdWx0IiwgImdldEVycm9yTWVzc2FnZXMiLCAiZXJyb3JDb2RlIiwgImdlbmVyYXRlRW1haWxUZW1wbGF0ZSIsICJ1c2VyRGF0YSIsICJnZXROb3RpZmljYXRpb25NZXNzYWdlcyIsICJwZXJmb3JtYW5jZUNvbXBhcmlzb24iLCAia2V5IiwgImdldFVzZXJHcmVldGluZyIsICJ1c2VyTG9jYWxlIiwgImhvdXIiLCAiZW5zdXJlQWxsVHJhbnNsYXRpb25zUHJvY2Vzc2VkIl0KfQo=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{getContentWithFallback as u}from"../actions/content";class m{batches=new Map;batchTimeout=50;maxBatchSize=20;async translate(e,t,n="en"){if(t.length===0)return{};const o=t.map(({key:r,fallback:i,params:l={}})=>this.getTranslation(e,r,i,l,n)),s=await Promise.all(o),a={};return t.forEach(({key:r},i)=>{a[r]=s[i]}),a}async getTranslation(e,t,n,o={},s="en"){return new Promise((a,r)=>{const i=this.getBatchKey(e,s),l={key:t,fallback:n,params:o,locale:s,resolve:a,reject:r};if(this.batches.has(i)){const c=this.batches.get(i);c.requests.push(l),c.requests.length>=this.maxBatchSize&&(clearTimeout(c.timeout),this.processBatch(i))}else{const c=setTimeout(()=>{this.processBatch(i)},this.batchTimeout);this.batches.set(i,{context:e,requests:[l],timeout:c})}})}async flush(){const e=Array.from(this.batches.keys());await Promise.all(e.map(t=>this.processBatch(t)))}clear(){this.batches.forEach(e=>{clearTimeout(e.timeout),e.requests.forEach(t=>{t.reject(new Error("Translation queue cleared"))})}),this.batches.clear()}getBatchKey(e,t){return`${e.databaseName}:${t}`}async processBatch(e){const t=this.batches.get(e);if(!t)return;this.batches.delete(e),clearTimeout(t.timeout);const n=t.requests.map(async s=>{try{const a=await u(t.context,s.key,s.fallback,s.locale),r=this.interpolate(a,s.params);return{request:s,result:r}}catch{const r=this.interpolate(s.fallback,s.params);return{request:s,result:r}}});(await Promise.allSettled(n)).forEach(s=>{if(s.status==="fulfilled")s.value.request.resolve(s.value.result);else{const{request:a}=s.reason,r=this.interpolate(a.fallback,a.params);a.resolve(r)}})}interpolate(e,t={}){return e.replace(/\{\{(\w+)\}\}/g,(n,o)=>t[o]!==void 0?String(t[o]):n)}}const h=new m,f=(p,e,t)=>h.translate(p,e,t),b=()=>h.flush(),d=()=>h.clear();export{d as clear,b as flush,f as i18n,h as translationQueue};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3RyYW5zbGF0aW9uUXVldWUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmltcG9ydCB7Z2V0Q29udGVudFdpdGhGYWxsYmFja30gZnJvbSAnLi4vYWN0aW9ucy9jb250ZW50JztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMnO1xuaW1wb3J0IHR5cGUge0xvY2FsZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcyc7XG5cbmludGVyZmFjZSBUcmFuc2xhdGlvblJlcXVlc3Qge1xuICBrZXk6IHN0cmluZztcbiAgZmFsbGJhY2s6IHN0cmluZztcbiAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbG9jYWxlOiBMb2NhbGU7XG4gIHJlc29sdmU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBUcmFuc2xhdGlvbkJhdGNoIHtcbiAgY29udGV4dDogQXBpQ29udGV4dDtcbiAgcmVxdWVzdHM6IFRyYW5zbGF0aW9uUmVxdWVzdFtdO1xuICB0aW1lb3V0OiBOb2RlSlMuVGltZW91dDtcbn1cblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uT2JqZWN0IHtcbiAga2V5OiBzdHJpbmc7XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5jbGFzcyBUcmFuc2xhdGlvblF1ZXVlIHtcbiAgcHJpdmF0ZSBiYXRjaGVzOiBNYXA8c3RyaW5nLCBUcmFuc2xhdGlvbkJhdGNoPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBiYXRjaFRpbWVvdXQgPSA1MDtcbiAgcHJpdmF0ZSBtYXhCYXRjaFNpemUgPSAyMDtcblxuICBhc3luYyB0cmFuc2xhdGUoXG4gICAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10sXG4gICAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIGlmKHRyYW5zbGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IHRyYW5zbGF0aW9ucy5tYXAoKHtrZXksIGZhbGxiYWNrLCBwYXJhbXMgPSB7fX0pID0+XG4gICAgICB0aGlzLmdldFRyYW5zbGF0aW9uKGNvbnRleHQsIGtleSwgZmFsbGJhY2ssIHBhcmFtcywgbG9jYWxlKVxuICAgICk7XG5cbiAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuXG4gICAgY29uc3QgcmVzdWx0TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgdHJhbnNsYXRpb25zLmZvckVhY2goKHtrZXl9LCBpbmRleCkgPT4ge1xuICAgICAgcmVzdWx0TWFwW2tleV0gPSByZXN1bHRzW2luZGV4XTtcbiAgICB9KTtcblxuICAgIHJldHVybiByZXN1bHRNYXA7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldFRyYW5zbGF0aW9uKFxuICAgIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gICAga2V5OiBzdHJpbmcsXG4gICAgZmFsbGJhY2s6IHN0cmluZyxcbiAgICBwYXJhbXM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbiAgICBsb2NhbGU6IExvY2FsZSA9ICdlbidcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgYmF0Y2hLZXkgPSB0aGlzLmdldEJhdGNoS2V5KGNvbnRleHQsIGxvY2FsZSk7XG4gICAgICBjb25zdCByZXF1ZXN0OiBUcmFuc2xhdGlvblJlcXVlc3QgPSB7a2V5LCBmYWxsYmFjaywgcGFyYW1zLCBsb2NhbGUsIHJlc29sdmUsIHJlamVjdH07XG5cbiAgICAgIGlmKCF0aGlzLmJhdGNoZXMuaGFzKGJhdGNoS2V5KSkge1xuICAgICAgICBjb25zdCB0aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQmF0Y2goYmF0Y2hLZXkpO1xuICAgICAgICB9LCB0aGlzLmJhdGNoVGltZW91dCk7XG5cbiAgICAgICAgdGhpcy5iYXRjaGVzLnNldChiYXRjaEtleSwge1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgcmVxdWVzdHM6IFtyZXF1ZXN0XSxcbiAgICAgICAgICB0aW1lb3V0XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYmF0Y2ggPSB0aGlzLmJhdGNoZXMuZ2V0KGJhdGNoS2V5KSE7XG4gICAgICAgIGJhdGNoLnJlcXVlc3RzLnB1c2gocmVxdWVzdCk7XG5cbiAgICAgICAgaWYoYmF0Y2gucmVxdWVzdHMubGVuZ3RoID49IHRoaXMubWF4QmF0Y2hTaXplKSB7XG4gICAgICAgICAgY2xlYXJUaW1lb3V0KGJhdGNoLnRpbWVvdXQpO1xuICAgICAgICAgIHRoaXMucHJvY2Vzc0JhdGNoKGJhdGNoS2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZmx1c2goKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYmF0Y2hLZXlzID0gQXJyYXkuZnJvbSh0aGlzLmJhdGNoZXMua2V5cygpKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbChiYXRjaEtleXMubWFwKChrZXkpID0+IHRoaXMucHJvY2Vzc0JhdGNoKGtleSkpKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuYmF0Y2hlcy5mb3JFYWNoKChiYXRjaCkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KGJhdGNoLnRpbWVvdXQpO1xuICAgICAgYmF0Y2gucmVxdWVzdHMuZm9yRWFjaCgocmVxdWVzdCkgPT4ge1xuICAgICAgICByZXF1ZXN0LnJlamVjdChuZXcgRXJyb3IoJ1RyYW5zbGF0aW9uIHF1ZXVlIGNsZWFyZWQnKSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICB0aGlzLmJhdGNoZXMuY2xlYXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QmF0Y2hLZXkoY29udGV4dDogQXBpQ29udGV4dCwgbG9jYWxlOiBMb2NhbGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtjb250ZXh0LmRhdGFiYXNlTmFtZX06JHtsb2NhbGV9YDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJvY2Vzc0JhdGNoKGJhdGNoS2V5OiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBiYXRjaCA9IHRoaXMuYmF0Y2hlcy5nZXQoYmF0Y2hLZXkpO1xuICAgIGlmKCFiYXRjaCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuYmF0Y2hlcy5kZWxldGUoYmF0Y2hLZXkpO1xuICAgIGNsZWFyVGltZW91dChiYXRjaC50aW1lb3V0KTtcblxuICAgIGNvbnN0IHByb21pc2VzID0gYmF0Y2gucmVxdWVzdHMubWFwKGFzeW5jIChyZXF1ZXN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZ2V0Q29udGVudFdpdGhGYWxsYmFjayhcbiAgICAgICAgICBiYXRjaC5jb250ZXh0LFxuICAgICAgICAgIHJlcXVlc3Qua2V5LFxuICAgICAgICAgIHJlcXVlc3QuZmFsbGJhY2ssXG4gICAgICAgICAgcmVxdWVzdC5sb2NhbGVcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRDb250ZW50ID0gdGhpcy5pbnRlcnBvbGF0ZShjb250ZW50LCByZXF1ZXN0LnBhcmFtcyk7XG4gICAgICAgIHJldHVybiB7cmVxdWVzdCwgcmVzdWx0OiBpbnRlcnBvbGF0ZWRDb250ZW50fTtcbiAgICAgIH0gY2F0Y2goZXJyb3IpIHtcbiAgICAgICAgY29uc3QgaW50ZXJwb2xhdGVkRmFsbGJhY2sgPSB0aGlzLmludGVycG9sYXRlKHJlcXVlc3QuZmFsbGJhY2ssIHJlcXVlc3QucGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHtyZXF1ZXN0LCByZXN1bHQ6IGludGVycG9sYXRlZEZhbGxiYWNrfTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQocHJvbWlzZXMpO1xuXG4gICAgcmVzdWx0cy5mb3JFYWNoKChyZXN1bHQpID0+IHtcbiAgICAgIGlmKHJlc3VsdC5zdGF0dXMgPT09ICdmdWxmaWxsZWQnKSB7XG4gICAgICAgIHJlc3VsdC52YWx1ZS5yZXF1ZXN0LnJlc29sdmUocmVzdWx0LnZhbHVlLnJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7cmVxdWVzdH0gPSByZXN1bHQucmVhc29uO1xuICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRGYWxsYmFjayA9IHRoaXMuaW50ZXJwb2xhdGUocmVxdWVzdC5mYWxsYmFjaywgcmVxdWVzdC5wYXJhbXMpO1xuICAgICAgICByZXF1ZXN0LnJlc29sdmUoaW50ZXJwb2xhdGVkRmFsbGJhY2spO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0ZShjb250ZW50OiBzdHJpbmcsIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29udGVudC5yZXBsYWNlKC9cXHtcXHsoXFx3KylcXH1cXH0vZywgKG1hdGNoLCBrZXkpID0+IChwYXJhbXNba2V5XSAhPT0gdW5kZWZpbmVkID8gU3RyaW5nKHBhcmFtc1trZXldKSA6IG1hdGNoKSk7XG4gIH1cbn1cblxuY29uc3QgdHJhbnNsYXRpb25RdWV1ZSA9IG5ldyBUcmFuc2xhdGlvblF1ZXVlKCk7XG5cbmV4cG9ydCBjb25zdCBpMThuID0gKFxuICBjb250ZXh0OiBBcGlDb250ZXh0LFxuICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10sXG4gIGxvY2FsZT86IExvY2FsZVxuKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+PiA9PiB0cmFuc2xhdGlvblF1ZXVlLnRyYW5zbGF0ZShjb250ZXh0LCB0cmFuc2xhdGlvbnMsIGxvY2FsZSk7XG5cbmV4cG9ydCBjb25zdCBmbHVzaCA9ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHRyYW5zbGF0aW9uUXVldWUuZmx1c2goKTtcbmV4cG9ydCBjb25zdCBjbGVhciA9ICgpOiB2b2lkID0+IHRyYW5zbGF0aW9uUXVldWUuY2xlYXIoKTtcblxuZXhwb3J0IHR5cGUge1RyYW5zbGF0aW9uT2JqZWN0fTtcblxuZXhwb3J0IHt0cmFuc2xhdGlvblF1ZXVlfTsiXSwKICAibWFwcGluZ3MiOiAiQUFLQSxPQUFRLDBCQUFBQSxNQUE2QixxQkEwQnJDLE1BQU1DLENBQWlCLENBQ2IsUUFBeUMsSUFBSSxJQUM3QyxhQUFlLEdBQ2YsYUFBZSxHQUV2QixNQUFNLFVBQ0pDLEVBQ0FDLEVBQ0FDLEVBQWlCLEtBQ2dCLENBQ2pDLEdBQUdELEVBQWEsU0FBVyxFQUN6QixNQUFPLENBQUMsRUFHVixNQUFNRSxFQUFXRixFQUFhLElBQUksQ0FBQyxDQUFDLElBQUFHLEVBQUssU0FBQUMsRUFBVSxPQUFBQyxFQUFTLENBQUMsQ0FBQyxJQUM1RCxLQUFLLGVBQWVOLEVBQVNJLEVBQUtDLEVBQVVDLEVBQVFKLENBQU0sQ0FDNUQsRUFFTUssRUFBVSxNQUFNLFFBQVEsSUFBSUosQ0FBUSxFQUVwQ0ssRUFBb0MsQ0FBQyxFQUMzQyxPQUFBUCxFQUFhLFFBQVEsQ0FBQyxDQUFDLElBQUFHLENBQUcsRUFB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QU9GLENBQUcsSUFBTSxPQUFZLE9BQU9FLEVBQU9GLENBQUcsQ0FBQyxFQUFJaUIsQ0FBTSxDQUNwSCxDQUNGLENBRUEsTUFBTUMsRUFBbUIsSUFBSXZCLEVBRWhCd0IsRUFBTyxDQUNsQnZCLEVBQ0FDLEVBQ0FDLElBQ29Db0IsRUFBaUIsVUFBVXRCLEVBQVNDLEVBQWNDLENBQU0sRUFFakZzQixFQUFRLElBQXFCRixFQUFpQixNQUFNLEVBQ3BERyxFQUFRLElBQVlILEVBQWlCLE1BQU0iLAogICJuYW1lcyI6IFsiZ2V0Q29udGVudFdpdGhGYWxsYmFjayIsICJUcmFuc2xhdGlvblF1ZXVlIiwgImNvbnRleHQiLCAidHJhbnNsYXRpb25zIiwgImxvY2FsZSIsICJwcm9taXNlcyIsICJrZXkiLCAiZmFsbGJhY2siLCAicGFyYW1zIiwgInJlc3VsdHMiLCAicmVzdWx0TWFwIiwgImluZGV4IiwgInJlc29sdmUiLCAicmVqZWN0IiwgImJhdGNoS2V5IiwgInJlcXVlc3QiLCAiYmF0Y2giLCAidGltZW91dCIsICJiYXRjaEtleXMiLCAiY29udGVudCIsICJpbnRlcnBvbGF0ZWRDb250ZW50IiwgImludGVycG9sYXRlZEZhbGxiYWNrIiwgInJlc3VsdCIsICJtYXRjaCIsICJ0cmFuc2xhdGlvblF1ZXVlIiwgImkxOG4iLCAiZmx1c2giLCAiY2xlYXIiXQp9Cg==
|
|
1
|
+
import{getContentWithFallback as u}from"../actions/content.js";class m{batches=new Map;batchTimeout=50;maxBatchSize=20;async translate(e,t,n="en"){if(t.length===0)return{};const o=t.map(({key:r,fallback:i="",params:l={}})=>this.getTranslation(e,r,i,l,n)),s=await Promise.all(o),a={};return t.forEach(({key:r},i)=>{a[r]=s[i]}),a}async getTranslation(e,t,n,o={},s="en"){return new Promise((a,r)=>{const i=this.getBatchKey(e,s),l={key:t,fallback:n,params:o,locale:s,resolve:a,reject:r};if(this.batches.has(i)){const c=this.batches.get(i);c.requests.push(l),c.requests.length>=this.maxBatchSize&&(clearTimeout(c.timeout),this.processBatch(i))}else{const c=setTimeout(()=>{this.processBatch(i)},this.batchTimeout);this.batches.set(i,{context:e,requests:[l],timeout:c})}})}async flush(){const e=Array.from(this.batches.keys());await Promise.all(e.map(t=>this.processBatch(t)))}clear(){this.batches.forEach(e=>{clearTimeout(e.timeout),e.requests.forEach(t=>{t.reject(new Error("Translation queue cleared"))})}),this.batches.clear()}getBatchKey(e,t){return`${e.databaseName}:${t}`}async processBatch(e){const t=this.batches.get(e);if(!t)return;this.batches.delete(e),clearTimeout(t.timeout);const n=t.requests.map(async s=>{try{const a=await u(t.context,s.key,s.fallback,s.locale),r=this.interpolate(a,s.params);return{request:s,result:r}}catch{const r=this.interpolate(s.fallback,s.params);return{request:s,result:r}}});(await Promise.allSettled(n)).forEach(s=>{if(s.status==="fulfilled")s.value.request.resolve(s.value.result);else{const{request:a}=s.reason,r=this.interpolate(a.fallback,a.params);a.resolve(r)}})}interpolate(e,t={}){return e.replace(/\{\{(\w+)\}\}/g,(n,o)=>t[o]!==void 0?String(t[o]):n)}}const h=new m,f=(p,e,t)=>h.translate(p,e,t),b=()=>h.flush(),d=()=>h.clear();export{d as clear,b as flush,f as i18n,h as translationQueue};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL3V0aWxzL3RyYW5zbGF0aW9uUXVldWUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5cbmltcG9ydCB7Z2V0Q29udGVudFdpdGhGYWxsYmFja30gZnJvbSAnLi4vYWN0aW9ucy9jb250ZW50LmpzJztcblxuaW1wb3J0IHR5cGUge0FwaUNvbnRleHR9IGZyb20gJy4uL3R5cGVzL2F1dGgudHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge0xvY2FsZX0gZnJvbSAnLi4vdHlwZXMvY29udGVudC50eXBlcy5qcyc7XG5cbmludGVyZmFjZSBUcmFuc2xhdGlvblJlcXVlc3Qge1xuICBrZXk6IHN0cmluZztcbiAgZmFsbGJhY2s6IHN0cmluZztcbiAgcGFyYW1zPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgbG9jYWxlOiBMb2NhbGU7XG4gIHJlc29sdmU6ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkO1xuICByZWplY3Q6IChlcnJvcjogRXJyb3IpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBUcmFuc2xhdGlvbkJhdGNoIHtcbiAgY29udGV4dDogQXBpQ29udGV4dDtcbiAgcmVxdWVzdHM6IFRyYW5zbGF0aW9uUmVxdWVzdFtdO1xuICB0aW1lb3V0OiBOb2RlSlMuVGltZW91dDtcbn1cblxuaW50ZXJmYWNlIFRyYW5zbGF0aW9uT2JqZWN0IHtcbiAga2V5OiBzdHJpbmc7XG4gIGZhbGxiYWNrPzogc3RyaW5nO1xuICBwYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xufVxuXG5jbGFzcyBUcmFuc2xhdGlvblF1ZXVlIHtcbiAgcHJpdmF0ZSBiYXRjaGVzOiBNYXA8c3RyaW5nLCBUcmFuc2xhdGlvbkJhdGNoPiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBiYXRjaFRpbWVvdXQgPSA1MDtcbiAgcHJpdmF0ZSBtYXhCYXRjaFNpemUgPSAyMDtcblxuICBhc3luYyB0cmFuc2xhdGUoXG4gICAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgICB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uT2JqZWN0W10sXG4gICAgbG9jYWxlOiBMb2NhbGUgPSAnZW4nXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4ge1xuICAgIGlmKHRyYW5zbGF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNlcyA9IHRyYW5zbGF0aW9ucy5tYXAoKHtrZXksIGZhbGxiYWNrID0gJycsIHBhcmFtcyA9IHt9fSkgPT5cbiAgICAgIHRoaXMuZ2V0VHJhbnNsYXRpb24oY29udGV4dCwga2V5LCBmYWxsYmFjaywgcGFyYW1zLCBsb2NhbGUpXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICBjb25zdCByZXN1bHRNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICB0cmFuc2xhdGlvbnMuZm9yRWFjaCgoe2tleX0sIGluZGV4KSA9PiB7XG4gICAgICByZXN1bHRNYXBba2V5XSA9IHJlc3VsdHNbaW5kZXhdO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3VsdE1hcDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0VHJhbnNsYXRpb24oXG4gICAgY29udGV4dDogQXBpQ29udGV4dCxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBmYWxsYmFjazogc3RyaW5nLFxuICAgIHBhcmFtczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICAgIGxvY2FsZTogTG9jYWxlID0gJ2VuJ1xuICApOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBiYXRjaEtleSA9IHRoaXMuZ2V0QmF0Y2hLZXkoY29udGV4dCwgbG9jYWxlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IFRyYW5zbGF0aW9uUmVxdWVzdCA9IHtrZXksIGZhbGxiYWNrLCBwYXJhbXMsIGxvY2FsZSwgcmVzb2x2ZSwgcmVqZWN0fTtcblxuICAgICAgaWYoIXRoaXMuYmF0Y2hlcy5oYXMoYmF0Y2hLZXkpKSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnByb2Nlc3NCYXRjaChiYXRjaEtleSk7XG4gICAgICAgIH0sIHRoaXMuYmF0Y2hUaW1lb3V0KTtcblxuICAgICAgICB0aGlzLmJhdGNoZXMuc2V0KGJhdGNoS2V5LCB7XG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICByZXF1ZXN0czogW3JlcXVlc3RdLFxuICAgICAgICAgIHRpbWVvdXRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBiYXRjaCA9IHRoaXMuYmF0Y2hlcy5nZXQoYmF0Y2hLZXkpITtcbiAgICAgICAgYmF0Y2gucmVxdWVzdHMucHVzaChyZXF1ZXN0KTtcblxuICAgICAgICBpZihiYXRjaC5yZXF1ZXN0cy5sZW5ndGggPj0gdGhpcy5tYXhCYXRjaFNpemUpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoYmF0Y2gudGltZW91dCk7XG4gICAgICAgICAgdGhpcy5wcm9jZXNzQmF0Y2goYmF0Y2hLZXkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBmbHVzaCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBiYXRjaEtleXMgPSBBcnJheS5mcm9tKHRoaXMuYmF0Y2hlcy5rZXlzKCkpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsKGJhdGNoS2V5cy5tYXAoKGtleSkgPT4gdGhpcy5wcm9jZXNzQmF0Y2goa2V5KSkpO1xuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5iYXRjaGVzLmZvckVhY2goKGJhdGNoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoYmF0Y2gudGltZW91dCk7XG4gICAgICBiYXRjaC5yZXF1ZXN0cy5mb3JFYWNoKChyZXF1ZXN0KSA9PiB7XG4gICAgICAgIHJlcXVlc3QucmVqZWN0KG5ldyBFcnJvcignVHJhbnNsYXRpb24gcXVldWUgY2xlYXJlZCcpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMuYmF0Y2hlcy5jbGVhcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCYXRjaEtleShjb250ZXh0OiBBcGlDb250ZXh0LCBsb2NhbGU6IExvY2FsZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke2NvbnRleHQuZGF0YWJhc2VOYW1lfToke2xvY2FsZX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBwcm9jZXNzQmF0Y2goYmF0Y2hLZXk6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJhdGNoID0gdGhpcy5iYXRjaGVzLmdldChiYXRjaEtleSk7XG4gICAgaWYoIWJhdGNoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5iYXRjaGVzLmRlbGV0ZShiYXRjaEtleSk7XG4gICAgY2xlYXJUaW1lb3V0KGJhdGNoLnRpbWVvdXQpO1xuXG4gICAgY29uc3QgcHJvbWlzZXMgPSBiYXRjaC5yZXF1ZXN0cy5tYXAoYXN5bmMgKHJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCBnZXRDb250ZW50V2l0aEZhbGxiYWNrKFxuICAgICAgICAgIGJhdGNoLmNvbnRleHQsXG4gICAgICAgICAgcmVxdWVzdC5rZXksXG4gICAgICAgICAgcmVxdWVzdC5mYWxsYmFjayxcbiAgICAgICAgICByZXF1ZXN0LmxvY2FsZVxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGludGVycG9sYXRlZENvbnRlbnQgPSB0aGlzLmludGVycG9sYXRlKGNvbnRlbnQsIHJlcXVlc3QucGFyYW1zKTtcbiAgICAgICAgcmV0dXJuIHtyZXF1ZXN0LCByZXN1bHQ6IGludGVycG9sYXRlZENvbnRlbnR9O1xuICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICBjb25zdCBpbnRlcnBvbGF0ZWRGYWxsYmFjayA9IHRoaXMuaW50ZXJwb2xhdGUocmVxdWVzdC5mYWxsYmFjaywgcmVxdWVzdC5wYXJhbXMpO1xuICAgICAgICByZXR1cm4ge3JlcXVlc3QsIHJlc3VsdDogaW50ZXJwb2xhdGVkRmFsbGJhY2t9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcm9taXNlcyk7XG5cbiAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCkgPT4ge1xuICAgICAgaWYocmVzdWx0LnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcpIHtcbiAgICAgICAgcmVzdWx0LnZhbHVlLnJlcXVlc3QucmVzb2x2ZShyZXN1bHQudmFsdWUucmVzdWx0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHtyZXF1ZXN0fSA9IHJlc3VsdC5yZWFzb247XG4gICAgICAgIGNvbnN0IGludGVycG9sYXRlZEZhbGxiYWNrID0gdGhpcy5pbnRlcnBvbGF0ZShyZXF1ZXN0LmZhbGxiYWNrLCByZXF1ZXN0LnBhcmFtcyk7XG4gICAgICAgIHJlcXVlc3QucmVzb2x2ZShpbnRlcnBvbGF0ZWRGYWxsYmFjayk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGludGVycG9sYXRlKGNvbnRlbnQ6IHN0cmluZywgcGFyYW1zOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pOiBzdHJpbmcge1xuICAgIHJldHVybiBjb250ZW50LnJlcGxhY2UoL1xce1xceyhcXHcrKVxcfVxcfS9nLCAobWF0Y2gsIGtleSkgPT4gKHBhcmFtc1trZXldICE9PSB1bmRlZmluZWQgPyBTdHJpbmcocGFyYW1zW2tleV0pIDogbWF0Y2gpKTtcbiAgfVxufVxuXG5jb25zdCB0cmFuc2xhdGlvblF1ZXVlID0gbmV3IFRyYW5zbGF0aW9uUXVldWUoKTtcblxuZXhwb3J0IGNvbnN0IGkxOG4gPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsXG4gIHRyYW5zbGF0aW9uczogVHJhbnNsYXRpb25PYmplY3RbXSxcbiAgbG9jYWxlPzogTG9jYWxlXG4pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0+IHRyYW5zbGF0aW9uUXVldWUudHJhbnNsYXRlKGNvbnRleHQsIHRyYW5zbGF0aW9ucywgbG9jYWxlKTtcblxuZXhwb3J0IGNvbnN0IGZsdXNoID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdHJhbnNsYXRpb25RdWV1ZS5mbHVzaCgpO1xuZXhwb3J0IGNvbnN0IGNsZWFyID0gKCk6IHZvaWQgPT4gdHJhbnNsYXRpb25RdWV1ZS5jbGVhcigpO1xuXG5leHBvcnQgdHlwZSB7VHJhbnNsYXRpb25PYmplY3R9O1xuXG4gIGV4cG9ydCB7dHJhbnNsYXRpb25RdWV1ZX07XG4iXSwKICAibWFwcGluZ3MiOiAiQUFLQSxPQUFRLDBCQUFBQSxNQUE2Qix3QkEwQnJDLE1BQU1DLENBQWlCLENBQ2IsUUFBeUMsSUFBSSxJQUM3QyxhQUFlLEdBQ2YsYUFBZSxHQUV2QixNQUFNLFVBQ0pDLEVBQ0FDLEVBQ0FDLEVBQWlCLEtBQ2dCLENBQ2pDLEdBQUdELEVBQWEsU0FBVyxFQUN6QixNQUFPLENBQUMsRUFHVixNQUFNRSxFQUFXRixFQUFhLElBQUksQ0FBQyxDQUFDLElBQUFHLEVBQUssU0FBQUMsRUFBVyxHQUFJLE9BQUFDLEVBQVMsQ0FBQyxDQUFDLElBQ2pFLEtBQUssZUFBZU4sRUFBU0ksRUFBS0MsRUFBVUMsRUFBUUosQ0FBTSxDQUM1RCxFQUVNSyxFQUFVLE1BQU0sUUFBUSxJQUFJSixDQUFRLEVBRXBDSyxFQUFvQyxDQUFDLEVBQzNDLE9BQUFQLEVBQWEsUUFBUSxD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QixDQUFDSSxFQUFPakIsSUFBU0UsRUFBT0YsQ0FBRyxJQUFNLE9BQVksT0FBT0UsRUFBT0YsQ0FBRyxDQUFDLEVBQUlpQixDQUFNLENBQ3BILENBQ0YsQ0FFQSxNQUFNQyxFQUFtQixJQUFJdkIsRUFFaEJ3QixFQUFPLENBQ2xCdkIsRUFDQUMsRUFDQUMsSUFDb0NvQixFQUFpQixVQUFVdEIsRUFBU0MsRUFBY0MsQ0FBTSxFQUVqRnNCLEVBQVEsSUFBcUJGLEVBQWlCLE1BQU0sRUFDcERHLEVBQVEsSUFBWUgsRUFBaUIsTUFBTSIsCiAgIm5hbWVzIjogWyJnZXRDb250ZW50V2l0aEZhbGxiYWNrIiwgIlRyYW5zbGF0aW9uUXVldWUiLCAiY29udGV4dCIsICJ0cmFuc2xhdGlvbnMiLCAibG9jYWxlIiwgInByb21pc2VzIiwgImtleSIsICJmYWxsYmFjayIsICJwYXJhbXMiLCAicmVzdWx0cyIsICJyZXN1bHRNYXAiLCAiaW5kZXgiLCAicmVzb2x2ZSIsICJyZWplY3QiLCAiYmF0Y2hLZXkiLCAicmVxdWVzdCIsICJiYXRjaCIsICJ0aW1lb3V0IiwgImJhdGNoS2V5cyIsICJjb250ZW50IiwgImludGVycG9sYXRlZENvbnRlbnQiLCAiaW50ZXJwb2xhdGVkRmFsbGJhY2siLCAicmVzdWx0IiwgIm1hdGNoIiwgInRyYW5zbGF0aW9uUXVldWUiLCAiaTE4biIsICJmbHVzaCIsICJjbGVhciJdCn0K
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nlabs/reaktor",
|
|
3
|
-
"version": "0.10.
|
|
3
|
+
"version": "0.10.2",
|
|
4
4
|
"description": "Reaktor",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./lib/index.js",
|
|
@@ -28,9 +28,11 @@
|
|
|
28
28
|
},
|
|
29
29
|
"scripts": {
|
|
30
30
|
"build": "lex compile --remove",
|
|
31
|
+
"build:dev": "APP_ENV=dev NODE_ENV=development lex compile --remove",
|
|
32
|
+
"build:prod": "APP_ENV=prod NODE_ENV=production lex compile --remove",
|
|
31
33
|
"clean": "lex clean",
|
|
32
34
|
"lint": "lex lint --fix",
|
|
33
|
-
"prepublishOnly": "npm run build",
|
|
35
|
+
"prepublishOnly": "npm run build:prod",
|
|
34
36
|
"publish:major": "npm version major && npm run publish:tags && npm publish",
|
|
35
37
|
"publish:minor": "npm version minor && npm run publish:tags && npm publish",
|
|
36
38
|
"publish:patch": "npm version patch && npm run publish:tags && npm publish",
|
|
@@ -41,31 +43,30 @@
|
|
|
41
43
|
"watch": "lex compile --remove --watch"
|
|
42
44
|
},
|
|
43
45
|
"dependencies": {
|
|
44
|
-
"@aws-sdk/client-apigatewaymanagementapi": "^3.
|
|
45
|
-
"@aws-sdk/client-dynamodb": "^3.
|
|
46
|
-
"@aws-sdk/client-s3": "^3.
|
|
47
|
-
"@aws-sdk/client-ses": "^3.
|
|
48
|
-
"@aws-sdk/client-sns": "^3.
|
|
49
|
-
"@aws-sdk/s3-request-presigner": "^3.
|
|
50
|
-
"@nlabs/arkhamjs": "^3.31.
|
|
51
|
-
"@nlabs/rip-hunter": "^3.0.
|
|
52
|
-
"@nlabs/utils": "^2.
|
|
46
|
+
"@aws-sdk/client-apigatewaymanagementapi": "^3.859.0",
|
|
47
|
+
"@aws-sdk/client-dynamodb": "^3.859.0",
|
|
48
|
+
"@aws-sdk/client-s3": "^3.859.0",
|
|
49
|
+
"@aws-sdk/client-ses": "^3.859.0",
|
|
50
|
+
"@aws-sdk/client-sns": "^3.859.0",
|
|
51
|
+
"@aws-sdk/s3-request-presigner": "^3.859.0",
|
|
52
|
+
"@nlabs/arkhamjs": "^3.31.7",
|
|
53
|
+
"@nlabs/rip-hunter": "^3.0.2",
|
|
54
|
+
"@nlabs/utils": "^2.8.4",
|
|
53
55
|
"@types/aws-lambda": "^8.10.152",
|
|
54
56
|
"apn": "^2.2.0",
|
|
55
57
|
"arangojs": "^10.1.2",
|
|
56
58
|
"aws-sdk": "^2.1692.0",
|
|
57
59
|
"child_process": "^1.0.2",
|
|
58
|
-
"core-js": "^3.
|
|
60
|
+
"core-js": "^3.45.0",
|
|
59
61
|
"file-type": "^21.0.0",
|
|
60
62
|
"gm": "^1.25.1",
|
|
61
63
|
"google-libphonenumber": "^3.2.42",
|
|
62
|
-
"googleapis": "
|
|
64
|
+
"googleapis": "155.0.0",
|
|
63
65
|
"graphql": "^16.11.0",
|
|
64
66
|
"graphql-compose": "^9.1.0",
|
|
65
67
|
"graphql-fields": "^2.0.3",
|
|
66
68
|
"i18next": "^25.3.2",
|
|
67
69
|
"jsonwebtoken": "^9.0.2",
|
|
68
|
-
"lodash": "^4.17.21",
|
|
69
70
|
"luxon": "^3.7.1",
|
|
70
71
|
"mime-types": "^3.0.1",
|
|
71
72
|
"net": "^1.0.2",
|
|
@@ -73,23 +74,23 @@
|
|
|
73
74
|
"numeral": "^2.0.6",
|
|
74
75
|
"sanitize-html": "^2.17.0",
|
|
75
76
|
"spawn-sync": "^2.0.0",
|
|
76
|
-
"stripe": "^18.
|
|
77
|
+
"stripe": "^18.4.0",
|
|
77
78
|
"tls": "0.0.1",
|
|
78
79
|
"to": "^0.2.9",
|
|
79
80
|
"typed-promisify": "^0.4.0",
|
|
80
81
|
"universal-analytics": "^0.5.3",
|
|
81
|
-
"zod": "^4.0.
|
|
82
|
+
"zod": "^4.0.14"
|
|
82
83
|
},
|
|
83
84
|
"devDependencies": {
|
|
84
|
-
"@
|
|
85
|
+
"@jest/globals": "^29.7.0",
|
|
86
|
+
"@nlabs/lex": "^1.49.3",
|
|
85
87
|
"@types/history": "^5.0.0",
|
|
86
88
|
"@types/jest": "^30.0.0",
|
|
87
|
-
"@types/luxon": "^3.
|
|
88
|
-
"@types/node": "^24.0
|
|
89
|
+
"@types/luxon": "^3.7.1",
|
|
90
|
+
"@types/node": "^24.2.0",
|
|
89
91
|
"@types/stripe": "^8.0.417",
|
|
90
92
|
"@types/twilio": "^3.19.3",
|
|
91
93
|
"graphql-tools": "^9.0.20",
|
|
92
|
-
"typescript": "^5.
|
|
93
|
-
"typescript-eslint": "^8.38.0"
|
|
94
|
+
"typescript": "^5.9.2"
|
|
94
95
|
}
|
|
95
96
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"include": [
|
|
4
|
+
"./src/**/*.ts",
|
|
5
|
+
"./src/**/*.tsx"
|
|
6
|
+
],
|
|
7
|
+
"exclude": [
|
|
8
|
+
"lib",
|
|
9
|
+
"./node_modules",
|
|
10
|
+
"./src/**/*.test.ts",
|
|
11
|
+
"./src/**/*.test.tsx",
|
|
12
|
+
"./src/**/*.spec.ts",
|
|
13
|
+
"./src/**/*.spec.tsx",
|
|
14
|
+
"./src/**/*.integration.ts",
|
|
15
|
+
"./src/**/*.integration.tsx"
|
|
16
|
+
],
|
|
17
|
+
"compilerOptions": {
|
|
18
|
+
"skipLibCheck": true,
|
|
19
|
+
"noEmitOnError": false
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"compilerOptions": {
|
|
4
|
+
"noImplicitAny": false,
|
|
5
|
+
"noImplicitThis": false,
|
|
6
|
+
"noUncheckedIndexedAccess": false,
|
|
7
|
+
"noUnusedLocals": false,
|
|
8
|
+
"skipLibCheck": false,
|
|
9
|
+
"strict": false,
|
|
10
|
+
"strictFunctionTypes": false,
|
|
11
|
+
"strictNullChecks": false,
|
|
12
|
+
"isolatedModules": false,
|
|
13
|
+
"noImplicitReturns": false,
|
|
14
|
+
"types": [
|
|
15
|
+
"jest",
|
|
16
|
+
"node"
|
|
17
|
+
],
|
|
18
|
+
},
|
|
19
|
+
"include": [
|
|
20
|
+
"./src/**/*.ts",
|
|
21
|
+
"./src/**/*.tsx",
|
|
22
|
+
"./src/**/*.test.ts",
|
|
23
|
+
"./src/**/*.test.tsx",
|
|
24
|
+
"./src/**/*.spec.ts",
|
|
25
|
+
"./src/**/*.spec.tsx"
|
|
26
|
+
],
|
|
27
|
+
"exclude": [
|
|
28
|
+
"lib",
|
|
29
|
+
"./node_modules",
|
|
30
|
+
"./src/**/*.integration.ts",
|
|
31
|
+
"./src/**/*.integration.tsx"
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": "./tsconfig.json",
|
|
3
|
+
"include": [
|
|
4
|
+
"src/**/*.test.ts",
|
|
5
|
+
"src/**/*.test.tsx",
|
|
6
|
+
"src/**/*.spec.ts",
|
|
7
|
+
"src/**/*.spec.tsx",
|
|
8
|
+
"src/**/*.integration.ts"
|
|
9
|
+
],
|
|
10
|
+
"compilerOptions": {
|
|
11
|
+
"types": [
|
|
12
|
+
"jest"
|
|
13
|
+
],
|
|
14
|
+
"noImplicitReturns": false,
|
|
15
|
+
"strictNullChecks": false,
|
|
16
|
+
"noImplicitAny": false,
|
|
17
|
+
"strict": false,
|
|
18
|
+
"strictFunctionTypes": false,
|
|
19
|
+
"noUnusedLocals": false,
|
|
20
|
+
"noImplicitThis": false,
|
|
21
|
+
"isolatedModules": false,
|
|
22
|
+
"allowJs": true,
|
|
23
|
+
"esModuleInterop": true,
|
|
24
|
+
"module": "commonjs",
|
|
25
|
+
"moduleResolution": "node",
|
|
26
|
+
"resolveJsonModule": true,
|
|
27
|
+
"skipLibCheck": true,
|
|
28
|
+
"noStrictGenericChecks": true,
|
|
29
|
+
"useUnknownInCatchVariables": false
|
|
30
|
+
}
|
|
31
|
+
}
|
package/dist/actions/apps.js
DELETED
|
@@ -1,242 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
-
var __export = (target, all) => {
|
|
6
|
-
for (var name in all)
|
|
7
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
-
};
|
|
9
|
-
var __copyProps = (to, from, except, desc) => {
|
|
10
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
-
for (let key of __getOwnPropNames(from))
|
|
12
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
-
}
|
|
15
|
-
return to;
|
|
16
|
-
};
|
|
17
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
-
var apps_exports = {};
|
|
19
|
-
__export(apps_exports, {
|
|
20
|
-
addApp: () => addApp,
|
|
21
|
-
deactivateApp: () => deactivateApp,
|
|
22
|
-
deleteApp: () => deleteApp,
|
|
23
|
-
getApp: () => getApp,
|
|
24
|
-
getAppOptional: () => getAppOptional,
|
|
25
|
-
getApps: () => getApps,
|
|
26
|
-
parseAppOptions: () => parseAppOptions,
|
|
27
|
-
updateApp: () => updateApp
|
|
28
|
-
});
|
|
29
|
-
module.exports = __toCommonJS(apps_exports);
|
|
30
|
-
var import_utils = require("@nlabs/utils");
|
|
31
|
-
var import_arangojs = require("arangojs");
|
|
32
|
-
var import_error = require("../types/error");
|
|
33
|
-
var import_analyticsUtils = require("../utils/analyticsUtils");
|
|
34
|
-
var import_arangodbUtils = require("../utils/arangodbUtils");
|
|
35
|
-
var import_session = require("../utils/session");
|
|
36
|
-
const eventCategory = "apps";
|
|
37
|
-
const getAppOptional = (fields = []) => fields.reduce((selects, field) => {
|
|
38
|
-
if (field.includes("Count")) {
|
|
39
|
-
return (0, import_arangodbUtils.selectReactionCountByType)("apps", "a", field, selects);
|
|
40
|
-
}
|
|
41
|
-
return selects;
|
|
42
|
-
}, { objects: [], queries: [] });
|
|
43
|
-
const parseAppOptions = (options = {}) => {
|
|
44
|
-
const {
|
|
45
|
-
from = 0,
|
|
46
|
-
to = 30
|
|
47
|
-
} = options;
|
|
48
|
-
const limit = (0, import_arangodbUtils.getLimit)(from, to);
|
|
49
|
-
return {
|
|
50
|
-
...options,
|
|
51
|
-
limit
|
|
52
|
-
};
|
|
53
|
-
};
|
|
54
|
-
const addApp = async (context, app) => {
|
|
55
|
-
const action = "addUser";
|
|
56
|
-
const { database } = context;
|
|
57
|
-
const { email, name, phone } = app;
|
|
58
|
-
const formatName = (0, import_utils.parseString)(name);
|
|
59
|
-
const formatEmail = (0, import_utils.parseEmail)(email);
|
|
60
|
-
const formatPhone = (0, import_utils.parsePhone)(phone);
|
|
61
|
-
if (!formatName) {
|
|
62
|
-
return (0, import_analyticsUtils.logException)({
|
|
63
|
-
action,
|
|
64
|
-
category: eventCategory,
|
|
65
|
-
params: { name },
|
|
66
|
-
value: import_error.ErrorTypes.INVALID_ARGUMENTS
|
|
67
|
-
}, context);
|
|
68
|
-
}
|
|
69
|
-
const filters = [`a.name == "${formatName}"`];
|
|
70
|
-
if (formatEmail) {
|
|
71
|
-
filters.push(`a.email == "${formatEmail}"`);
|
|
72
|
-
}
|
|
73
|
-
const checkQuery = `FOR u IN users
|
|
74
|
-
FILTER ${filters.join(" || ")}
|
|
75
|
-
RETURN u`;
|
|
76
|
-
try {
|
|
77
|
-
const existingApps = await database.query(checkQuery).then((cursor) => cursor.all());
|
|
78
|
-
if (existingApps.length) {
|
|
79
|
-
return (0, import_analyticsUtils.logException)({
|
|
80
|
-
action,
|
|
81
|
-
category: eventCategory,
|
|
82
|
-
params: { name },
|
|
83
|
-
value: import_error.ErrorTypes.EXISTING_ITEM
|
|
84
|
-
}, context);
|
|
85
|
-
}
|
|
86
|
-
} catch (error) {
|
|
87
|
-
return (0, import_analyticsUtils.logError)({
|
|
88
|
-
action,
|
|
89
|
-
category: eventCategory,
|
|
90
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
91
|
-
params: { name }
|
|
92
|
-
}, error, context);
|
|
93
|
-
}
|
|
94
|
-
const insert = {
|
|
95
|
-
_key: (0, import_utils.createHash)(name, null),
|
|
96
|
-
active: true,
|
|
97
|
-
added: Date.now(),
|
|
98
|
-
email: formatEmail,
|
|
99
|
-
modified: Date.now(),
|
|
100
|
-
name: formatName,
|
|
101
|
-
phone: formatPhone
|
|
102
|
-
};
|
|
103
|
-
const insertQuery = import_arangojs.aql`INSERT ${insert} IN apps RETURN NEW`;
|
|
104
|
-
return await database.query(insertQuery).then((cursor) => cursor.next() || {}).catch((error) => (0, import_analyticsUtils.logError)({
|
|
105
|
-
action,
|
|
106
|
-
category: eventCategory,
|
|
107
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
108
|
-
params: { name }
|
|
109
|
-
}, error, context));
|
|
110
|
-
};
|
|
111
|
-
const updateApp = async (context, app) => {
|
|
112
|
-
const action = "updateApp";
|
|
113
|
-
const { database } = context;
|
|
114
|
-
const { _key, _id, id, appId, ...updated } = app;
|
|
115
|
-
const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
|
|
116
|
-
const appQuery = import_arangojs.aql`LET a = DOCUMENT(${appDocId})
|
|
117
|
-
UPDATE a WITH ${updated} IN apps
|
|
118
|
-
RETURN NEW`;
|
|
119
|
-
return await database.query(appQuery).then((cursor) => cursor.next()).catch(
|
|
120
|
-
(error) => (0, import_analyticsUtils.logError)({
|
|
121
|
-
action,
|
|
122
|
-
category: eventCategory,
|
|
123
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
124
|
-
params: { app }
|
|
125
|
-
}, error, context)
|
|
126
|
-
);
|
|
127
|
-
};
|
|
128
|
-
const deleteApp = async (context, app) => {
|
|
129
|
-
const action = "deleteApp";
|
|
130
|
-
const { database, session } = context;
|
|
131
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
132
|
-
const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
|
|
133
|
-
if (!isAdmin) {
|
|
134
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
135
|
-
}
|
|
136
|
-
const aqlQuery = import_arangojs.aql`FOR a IN apps
|
|
137
|
-
FILTER a._id == \"${appDocId}\"
|
|
138
|
-
LIMIT 1
|
|
139
|
-
REMOVE a IN apps
|
|
140
|
-
RETURN OLD`;
|
|
141
|
-
return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => (0, import_analyticsUtils.logError)({
|
|
142
|
-
action,
|
|
143
|
-
category: eventCategory,
|
|
144
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
145
|
-
params: app
|
|
146
|
-
}, error, context));
|
|
147
|
-
};
|
|
148
|
-
const deactivateApp = (context, app) => {
|
|
149
|
-
const action = "deactivateApp";
|
|
150
|
-
const { database, session } = context;
|
|
151
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
152
|
-
const appDocId = (0, import_arangodbUtils.getDocId)("apps", app);
|
|
153
|
-
if (!isAdmin) {
|
|
154
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
155
|
-
}
|
|
156
|
-
const updated = {
|
|
157
|
-
active: false
|
|
158
|
-
};
|
|
159
|
-
const aqlQuery = import_arangojs.aql`UPDATE ${appDocId} WITH ${updated} IN apps LIMIT 1 RETURN NEW`;
|
|
160
|
-
return database.query(aqlQuery).then((cursor) => cursor.next()).catch(
|
|
161
|
-
(error) => (0, import_analyticsUtils.logError)({
|
|
162
|
-
action,
|
|
163
|
-
category: eventCategory,
|
|
164
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
165
|
-
params: app
|
|
166
|
-
}, error, context)
|
|
167
|
-
);
|
|
168
|
-
};
|
|
169
|
-
const getApp = (context, options) => {
|
|
170
|
-
const action = "getApp";
|
|
171
|
-
const { database, fields, session } = context;
|
|
172
|
-
const { id, key, name } = parseAppOptions(options);
|
|
173
|
-
const { objects: selectObjects, queries: selectQueries } = getAppOptional(fields);
|
|
174
|
-
const filterBy = ["a.active == true"];
|
|
175
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
176
|
-
if (!isAdmin) {
|
|
177
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
178
|
-
}
|
|
179
|
-
if (id) {
|
|
180
|
-
filterBy.push(`a._id == "${(0, import_utils.parseArangoId)(id)}"`);
|
|
181
|
-
}
|
|
182
|
-
if (key) {
|
|
183
|
-
filterBy.push(`a._key == "apps/${(0, import_utils.parseId)(key)}"`);
|
|
184
|
-
}
|
|
185
|
-
if (name) {
|
|
186
|
-
filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
|
|
187
|
-
}
|
|
188
|
-
const aqlQuery = `FOR a IN apps
|
|
189
|
-
FILTER ${filterBy.join(" && ")}
|
|
190
|
-
${selectQueries.join("\n")}
|
|
191
|
-
RETURN MERGE(a, {${selectObjects.join(", ")}})`;
|
|
192
|
-
return database.query(aqlQuery).then((cursor) => cursor.next()).catch((error) => {
|
|
193
|
-
(0, import_analyticsUtils.logError)({
|
|
194
|
-
action,
|
|
195
|
-
category: eventCategory,
|
|
196
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
197
|
-
params: options
|
|
198
|
-
}, error, context);
|
|
199
|
-
return null;
|
|
200
|
-
});
|
|
201
|
-
};
|
|
202
|
-
const getApps = async (context, options) => {
|
|
203
|
-
const action = "getApps";
|
|
204
|
-
const { database, fields, session } = context;
|
|
205
|
-
const { limit, name } = parseAppOptions(options);
|
|
206
|
-
const { objects: selectObjects, queries: selectQueries } = getAppOptional(fields);
|
|
207
|
-
const filterBy = ["a.active == true"];
|
|
208
|
-
const isAdmin = (0, import_session.isAdminUser)(session);
|
|
209
|
-
if (!isAdmin) {
|
|
210
|
-
return Promise.reject(new import_analyticsUtils.UserError(import_error.ErrorTypes.INVALID_SESSION));
|
|
211
|
-
}
|
|
212
|
-
if (name) {
|
|
213
|
-
filterBy.push(`CONTAINS(a.name, "${(0, import_utils.parseString)(name)}")`);
|
|
214
|
-
}
|
|
215
|
-
const aqlQuery = `FOR a IN apps
|
|
216
|
-
FILTER ${filterBy.join(" && ")}
|
|
217
|
-
${selectQueries.join("\n")}
|
|
218
|
-
${limit.aql}
|
|
219
|
-
SORT a.name
|
|
220
|
-
RETURN MERGE(a, {${selectObjects.join(", ")}})`;
|
|
221
|
-
return database.query(aqlQuery).then((cursor) => cursor.all()).catch((error) => {
|
|
222
|
-
(0, import_analyticsUtils.logError)({
|
|
223
|
-
action,
|
|
224
|
-
category: eventCategory,
|
|
225
|
-
label: import_error.ErrorTypes.DATABASE_ERROR,
|
|
226
|
-
params: options
|
|
227
|
-
}, error, context);
|
|
228
|
-
return [];
|
|
229
|
-
});
|
|
230
|
-
};
|
|
231
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
232
|
-
0 && (module.exports = {
|
|
233
|
-
addApp,
|
|
234
|
-
deactivateApp,
|
|
235
|
-
deleteApp,
|
|
236
|
-
getApp,
|
|
237
|
-
getAppOptional,
|
|
238
|
-
getApps,
|
|
239
|
-
parseAppOptions,
|
|
240
|
-
updateApp
|
|
241
|
-
});
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2FjdGlvbnMvYXBwcy50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTktUHJlc2VudCwgTml0cm9nZW4gTGFicywgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4gKi9cbmltcG9ydCB7Y3JlYXRlSGFzaCwgcGFyc2VBcmFuZ29JZCwgcGFyc2VFbWFpbCwgcGFyc2VJZCwgcGFyc2VQaG9uZSwgcGFyc2VTdHJpbmd9IGZyb20gJ0BubGFicy91dGlscyc7XG5pbXBvcnQge2FxbH0gZnJvbSAnYXJhbmdvanMnO1xuaW1wb3J0IHtBcWxRdWVyeX0gZnJvbSAnYXJhbmdvanMvYXFsJztcblxuaW1wb3J0IHtBcHBUeXBlfSBmcm9tICcuLi90eXBlcy9hcHBzJztcbmltcG9ydCB7RXJyb3JUeXBlc30gZnJvbSAnLi4vdHlwZXMvZXJyb3InO1xuaW1wb3J0IHtsb2dFcnJvciwgbG9nRXhjZXB0aW9uLCBVc2VyRXJyb3J9IGZyb20gJy4uL3V0aWxzL2FuYWx5dGljc1V0aWxzJztcbmltcG9ydCB7Z2V0RG9jSWQsIGdldExpbWl0LCBzZWxlY3RSZWFjdGlvbkNvdW50QnlUeXBlfSBmcm9tICcuLi91dGlscy9hcmFuZ29kYlV0aWxzJztcbmltcG9ydCB7aXNBZG1pblVzZXJ9IGZyb20gJy4uL3V0aWxzL3Nlc3Npb24nO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aCc7XG5pbXBvcnQgdHlwZSB7VXNlclR5cGV9IGZyb20gJy4uL3R5cGVzL3VzZXJzJztcblxuY29uc3QgZXZlbnRDYXRlZ29yeTogc3RyaW5nID0gJ2FwcHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFwcE9wdGlvbnMge1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgcmVhZG9ubHkga2V5Pzogc3RyaW5nO1xuICByZWFkb25seSBmcm9tPzogbnVtYmVyO1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuICByZWFkb25seSB0bz86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEFwcE9wdGlvbmFsID0gKGZpZWxkczogc3RyaW5nW10gPSBbXSkgPT5cbiAgZmllbGRzLnJlZHVjZSgoc2VsZWN0cywgZmllbGQ6IHN0cmluZykgPT4ge1xuICAgIGlmKGZpZWxkLmluY2x1ZGVzKCdDb3VudCcpKSB7XG4gICAgICByZXR1cm4gc2VsZWN0UmVhY3Rpb25Db3VudEJ5VHlwZSgnYXBwcycsICdhJywgZmllbGQsIHNlbGVjdHMpO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3RzO1xuICB9LCB7b2JqZWN0czogW10sIHF1ZXJpZXM6IFtdfSk7XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFwcE9wdGlvbnMgPSAob3B0aW9uczogQXBwT3B0aW9ucyA9IHt9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmcm9tID0gMCxcbiAgICB0byA9IDMwXG4gIH0gPSBvcHRpb25zO1xuICBjb25zdCBsaW1pdCA9IGdldExpbWl0KGZyb20sIHRvKTtcblxuICByZXR1cm4ge1xuICAgIC4uLm9wdGlvbnMsXG4gICAgbGltaXRcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBhZGRBcHAgPSBhc3luYyAoY29udGV4dDogQXBpQ29udGV4dCwgYXBwOiBBcHBUeXBlKTogUHJvbWlzZTxVc2VyVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb24gPSAnYWRkVXNlcic7XG4gIGNvbnN0IHtkYXRhYmFzZX0gPSBjb250ZXh0O1xuICBjb25zdCB7ZW1haWwsIG5hbWUsIHBob25lfSA9IGFwcDtcbiAgY29uc3QgZm9ybWF0TmFtZSA9IHBhcnNlU3RyaW5nKG5hbWUpO1xuICBjb25zdCBmb3JtYXRFbWFpbCA9IHBhcnNlRW1haWwoZW1haWwpO1xuICBjb25zdCBmb3JtYXRQaG9uZSA9IHBhcnNlUGhvbmUocGhvbmUpO1xuXG4gIGlmKCFmb3JtYXROYW1lKSB7XG4gICAgcmV0dXJuIGxvZ0V4Y2VwdGlvbih7XG4gICAgICBhY3Rpb24sXG4gICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgIHBhcmFtczoge25hbWV9LFxuICAgICAgdmFsdWU6IEVycm9yVHlwZXMuSU5WQUxJRF9BUkdVTUVOVFNcbiAgICB9LCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGZpbHRlcnM6IHN0cmluZ1tdID0gW2BhLm5hbWUgPT0gXCIke2Zvcm1hdE5hbWV9XCJgXTtcblxuICBpZihmb3JtYXRFbWFpbCkge1xuICAgIGZpbHRlcnMucHVzaChgYS5lbWFpbCA9PSBcIiR7Zm9ybWF0RW1haWx9XCJgKTtcbiAgfVxuXG4gIGNvbnN0IGNoZWNrUXVlcnk6IHN0cmluZyA9IGBGT1IgdSBJTiB1c2Vyc1xuICAgIEZJTFRFUiAke2ZpbHRlcnMuam9pbignIHx8ICcpfVxuICAgIFJFVFVSTiB1YDtcblxuICB0cnkge1xuICAgIGNvbnN0IGV4aXN0aW5nQXBwcyA9IGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGNoZWNrUXVlcnkpLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLmFsbCgpKTtcblxuICAgIGlmKGV4aXN0aW5nQXBwcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBsb2dFeGNlcHRpb24oe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBwYXJhbXM6IHtuYW1lfSxcbiAgICAgICAgdmFsdWU6IEVycm9yVHlwZXMuRVhJU1RJTkdfSVRFTVxuICAgICAgfSwgY29udGV4dCk7XG4gICAgfVxuICB9IGNhdGNoKGVycm9yKSB7XG4gICAgcmV0dXJuIGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KTtcbiAgfVxuXG4gIGNvbnN0IGluc2VydDogQXBwVHlwZSA9IHtcbiAgICBfa2V5OiBjcmVhdGVIYXNoKG5hbWUsIG51bGwpLFxuICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICBhZGRlZDogRGF0ZS5ub3coKSxcbiAgICBlbWFpbDogZm9ybWF0RW1haWwsXG4gICAgbW9kaWZpZWQ6IERhdGUubm93KCksXG4gICAgbmFtZTogZm9ybWF0TmFtZSxcbiAgICBwaG9uZTogZm9ybWF0UGhvbmVcbiAgfTtcblxuICBjb25zdCBpbnNlcnRRdWVyeTogQXFsUXVlcnkgPSBhcWxgSU5TRVJUICR7aW5zZXJ0fSBJTiBhcHBzIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBhd2FpdCBkYXRhYmFzZS5xdWVyeShpbnNlcnRRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIHx8IHt9KVxuICAgIC5jYXRjaCgoZXJyb3IpID0+IGxvZ0Vycm9yKHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICBwYXJhbXM6IHtuYW1lfVxuICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICd1cGRhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2V9ID0gY29udGV4dDtcbiAgY29uc3Qge19rZXksIF9pZCwgaWQsIGFwcElkLCAuLi51cGRhdGVkfSA9IGFwcDtcbiAgY29uc3QgYXBwRG9jSWQgPSBnZXREb2NJZCgnYXBwcycsIGFwcCk7XG4gIGNvbnN0IGFwcFF1ZXJ5OiBBcWxRdWVyeSA9IGFxbGBMRVQgYSA9IERPQ1VNRU5UKCR7YXBwRG9jSWR9KVxuICAgIFVQREFURSBhIFdJVEggJHt1cGRhdGVkfSBJTiBhcHBzXG4gICAgUkVUVVJOIE5FV2A7XG5cbiAgcmV0dXJuIGF3YWl0IGRhdGFiYXNlLnF1ZXJ5KGFwcFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5uZXh0KCkpXG4gICAgLmNhdGNoKChlcnJvcikgPT5cbiAgICAgIGxvZ0Vycm9yKHtcbiAgICAgICAgYWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogZXZlbnRDYXRlZ29yeSxcbiAgICAgICAgbGFiZWw6IEVycm9yVHlwZXMuREFUQUJBU0VfRVJST1IsXG4gICAgICAgIHBhcmFtczoge2FwcH1cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVsZXRlQXBwID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIGFwcDogQXBwVHlwZSk6IFByb21pc2U8QXBwVHlwZT4gPT4ge1xuICBjb25zdCBhY3Rpb246IHN0cmluZyA9ICdkZWxldGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCBhcWxRdWVyeTogQXFsUXVlcnkgPSBhcWxgRk9SIGEgSU4gYXBwc1xuICAgIEZJTFRFUiBhLl9pZCA9PSBcXFwiJHthcHBEb2NJZH1cXFwiXG4gICAgTElNSVQgMVxuICAgIFJFTU9WRSBhIElOIGFwcHNcbiAgICBSRVRVUk4gT0xEYDtcblxuICByZXR1cm4gZGF0YWJhc2UucXVlcnkoYXFsUXVlcnkpXG4gICAgLnRoZW4oKGN1cnNvcikgPT4gY3Vyc29yLm5leHQoKSlcbiAgICAuY2F0Y2goKGVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVhY3RpdmF0ZUFwcCA9IChjb250ZXh0OiBBcGlDb250ZXh0LCBhcHA6IEFwcFR5cGUpOiBQcm9taXNlPFVzZXJUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2RlYWN0aXZhdGVBcHAnO1xuICBjb25zdCB7ZGF0YWJhc2UsIHNlc3Npb259ID0gY29udGV4dDtcbiAgY29uc3QgaXNBZG1pbiA9IGlzQWRtaW5Vc2VyKHNlc3Npb24pO1xuICBjb25zdCBhcHBEb2NJZCA9IGdldERvY0lkKCdhcHBzJywgYXBwKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBjb25zdCB1cGRhdGVkOiBBcHBUeXBlID0ge1xuICAgIGFjdGl2ZTogZmFsc2VcbiAgfTtcbiAgY29uc3QgYXFsUXVlcnk6IEFxbFF1ZXJ5ID0gYXFsYFVQREFURSAke2FwcERvY0lkfSBXSVRIICR7dXBkYXRlZH0gSU4gYXBwcyBMSU1JVCAxIFJFVFVSTiBORVdgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpKVxuICAgIC5jYXRjaCgoZXJyb3I6IEVycm9yKSA9PlxuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBhcHAgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICAgIH0sIGVycm9yLCBjb250ZXh0KVxuICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QXBwID0gKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlPiA9PiB7XG4gIGNvbnN0IGFjdGlvbjogc3RyaW5nID0gJ2dldEFwcCc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtpZCwga2V5LCBuYW1lfSA9IHBhcnNlQXBwT3B0aW9ucyhvcHRpb25zKTtcbiAgY29uc3Qge29iamVjdHM6IHNlbGVjdE9iamVjdHMsIHF1ZXJpZXM6IHNlbGVjdFF1ZXJpZXN9ID0gZ2V0QXBwT3B0aW9uYWwoZmllbGRzKTtcbiAgY29uc3QgZmlsdGVyQnk6IHN0cmluZ1tdID0gWydhLmFjdGl2ZSA9PSB0cnVlJ107XG4gIGNvbnN0IGlzQWRtaW4gPSBpc0FkbWluVXNlcihzZXNzaW9uKTtcblxuICBpZighaXNBZG1pbikge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVXNlckVycm9yKEVycm9yVHlwZXMuSU5WQUxJRF9TRVNTSU9OKSk7XG4gIH1cblxuICBpZihpZCkge1xuICAgIGZpbHRlckJ5LnB1c2goYGEuX2lkID09IFwiJHtwYXJzZUFyYW5nb0lkKGlkKX1cImApO1xuICB9XG5cbiAgaWYoa2V5KSB7XG4gICAgZmlsdGVyQnkucHVzaChgYS5fa2V5ID09IFwiYXBwcy8ke3BhcnNlSWQoa2V5KX1cImApO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgIFJFVFVSTiBNRVJHRShhLCB7JHtzZWxlY3RPYmplY3RzLmpvaW4oJywgJyl9fSlgO1xuXG4gIHJldHVybiBkYXRhYmFzZS5xdWVyeShhcWxRdWVyeSlcbiAgICAudGhlbigoY3Vyc29yKSA9PiBjdXJzb3IubmV4dCgpIGFzIHVua25vd24gYXMgQXBwVHlwZSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBcHBzID0gYXN5bmMgKGNvbnRleHQ6IEFwaUNvbnRleHQsIG9wdGlvbnM/OiBBcHBPcHRpb25zKTogUHJvbWlzZTxBcHBUeXBlW10+ID0+IHtcbiAgY29uc3QgYWN0aW9uOiBzdHJpbmcgPSAnZ2V0QXBwcyc7XG4gIGNvbnN0IHtkYXRhYmFzZSwgZmllbGRzLCBzZXNzaW9ufSA9IGNvbnRleHQ7XG4gIGNvbnN0IHtsaW1pdCwgbmFtZX0gPSBwYXJzZUFwcE9wdGlvbnMob3B0aW9ucyk7XG4gIGNvbnN0IHtvYmplY3RzOiBzZWxlY3RPYmplY3RzLCBxdWVyaWVzOiBzZWxlY3RRdWVyaWVzfSA9IGdldEFwcE9wdGlvbmFsKGZpZWxkcyk7XG4gIGNvbnN0IGZpbHRlckJ5OiBzdHJpbmdbXSA9IFsnYS5hY3RpdmUgPT0gdHJ1ZSddO1xuICBjb25zdCBpc0FkbWluID0gaXNBZG1pblVzZXIoc2Vzc2lvbik7XG5cbiAgaWYoIWlzQWRtaW4pIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFVzZXJFcnJvcihFcnJvclR5cGVzLklOVkFMSURfU0VTU0lPTikpO1xuICB9XG5cbiAgaWYobmFtZSkge1xuICAgIGZpbHRlckJ5LnB1c2goYENPTlRBSU5TKGEubmFtZSwgXCIke3BhcnNlU3RyaW5nKG5hbWUpfVwiKWApO1xuICB9XG5cbiAgLy8gR2V0IGRhdGEgZnJvbSBkYXRhYmFzZVxuICBjb25zdCBhcWxRdWVyeTogc3RyaW5nID0gYEZPUiBhIElOIGFwcHNcbiAgICBGSUxURVIgJHtmaWx0ZXJCeS5qb2luKCcgJiYgJyl9XG4gICAgJHtzZWxlY3RRdWVyaWVzLmpvaW4oJ1xcbicpfVxuICAgICR7bGltaXQuYXFsfVxuICAgIFNPUlQgYS5uYW1lXG4gICAgUkVUVVJOIE1FUkdFKGEsIHske3NlbGVjdE9iamVjdHMuam9pbignLCAnKX19KWA7XG5cbiAgcmV0dXJuIGRhdGFiYXNlLnF1ZXJ5KGFxbFF1ZXJ5KVxuICAgIC50aGVuKChjdXJzb3IpID0+IGN1cnNvci5hbGwoKSBhcyB1bmtub3duIGFzIEFwcFR5cGVbXSlcbiAgICAuY2F0Y2goKGVycm9yOiBFcnJvcikgPT4ge1xuICAgICAgbG9nRXJyb3Ioe1xuICAgICAgICBhY3Rpb24sXG4gICAgICAgIGNhdGVnb3J5OiBldmVudENhdGVnb3J5LFxuICAgICAgICBsYWJlbDogRXJyb3JUeXBlcy5EQVRBQkFTRV9FUlJPUixcbiAgICAgICAgcGFyYW1zOiBvcHRpb25zIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgICB9LCBlcnJvciwgY29udGV4dCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfSk7XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7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QUFLLHlCQUFxQiwwQkFBWSxJQUFJLENBQUMsSUFBSTtBQUFBLEVBQzFEO0FBR0EsUUFBTSxXQUFtQjtBQUFBLGFBQ2QsU0FBUyxLQUFLLE1BQU0sQ0FBQztBQUFBLE1BQzVCLGNBQWMsS0FBSyxJQUFJLENBQUM7QUFBQSx1QkFDUCxjQUFjLEtBQUssSUFBSSxDQUFDO0FBRTdDLFNBQU8sU0FBUyxNQUFNLFFBQVEsRUFDM0IsS0FBSyxDQUFDLFdBQVcsT0FBTyxLQUFLLENBQXVCLEVBQ3BELE1BQU0sQ0FBQyxVQUFpQjtBQUN2Qix3Q0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8sd0JBQVc7QUFBQSxNQUNsQixRQUFRO0FBQUEsSUFDVixHQUFHLE9BQU8sT0FBTztBQUNqQixXQUFPO0FBQUEsRUFDVCxDQUFDO0FBQ0w7QUFFTyxNQUFNLFVBQVUsT0FBTyxTQUFxQixZQUE2QztBQUM5RixRQUFNLFNBQWlCO0FBQ3ZCLFFBQU0sRUFBQyxVQUFVLFFBQVEsUUFBTyxJQUFJO0FBQ3BDLFFBQU0sRUFBQyxPQUFPLEtBQUksSUFBSSxnQkFBZ0IsT0FBTztBQUM3QyxRQUFNLEVBQUMsU0FBUyxlQUFlLFNBQVMsY0FBYSxJQUFJLGVBQWUsTUFBTTtBQUM5RSxRQUFNLFdBQXFCLENBQUMsa0JBQWtCO0FBQzlDLFFBQU0sY0FBVSw0QkFBWSxPQUFPO0FBRW5DLE1BQUcsQ0FBQyxTQUFTO0FBQ1gsV0FBTyxRQUFRLE9BQU8sSUFBSSxnQ0FBVSx3QkFBVyxlQUFlLENBQUM7QUFBQSxFQUNqRTtBQUVBLE1BQUcsTUFBTTtBQUNQLGFBQVMsS0FBSyx5QkFBcUIsMEJBQVksSUFBSSxDQUFDLElBQUk7QUFBQSxFQUMxRDtBQUdBLFFBQU0sV0FBbUI7QUFBQSxhQUNkLFNBQVMsS0FBSyxNQUFNLENBQUM7QUFBQSxNQUM1QixjQUFjLEtBQUssSUFBSSxDQUFDO0FBQUEsTUFDeEIsTUFBTSxHQUFHO0FBQUE7QUFBQSx1QkFFUSxjQUFjLEtBQUssSUFBSSxDQUFDO0FBRTdDLFNBQU8sU0FBUyxNQUFNLFFBQVEsRUFDM0IsS0FBSyxDQUFDLFdBQVcsT0FBTyxJQUFJLENBQXlCLEVBQ3JELE1BQU0sQ0FBQyxVQUFpQjtBQUN2Qix3Q0FBUztBQUFBLE1BQ1A7QUFBQSxNQUNBLFVBQVU7QUFBQSxNQUNWLE9BQU8sd0JBQVc7QUFBQSxNQUNsQixRQUFRO0FBQUEsSUFDVixHQUFHLE9BQU8sT0FBTztBQUNqQixXQUFPLENBQUM7QUFBQSxFQUNWLENBQUM7QUFDTDsiLAogICJuYW1lcyI6IFtdCn0K
|