@nlabs/reaktor 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/GENERATION.md +38 -16
- package/lib/actions/alfredFaq.js +1 -1
- package/lib/actions/analytics.js +1 -1
- package/lib/actions/apps.js +1 -1
- package/lib/actions/connections.js +1 -1
- package/lib/actions/content.js +1 -1
- package/lib/actions/contentGeneration.d.ts +3 -0
- package/lib/actions/contentGeneration.js +62 -9
- package/lib/actions/contentGenerationErrors.js +1 -1
- package/lib/actions/conversations.js +1 -1
- package/lib/actions/crm.js +1 -1
- package/lib/actions/crud.js +1 -1
- package/lib/actions/databaseAccounts.js +1 -1
- package/lib/actions/databaseProvisioningLease.js +1 -1
- package/lib/actions/dynamodb.js +1 -1
- package/lib/actions/email.js +1 -1
- package/lib/actions/files.js +1 -1
- package/lib/actions/flags.js +1 -1
- package/lib/actions/geminiVideo.js +1 -1
- package/lib/actions/groups.js +1 -1
- package/lib/actions/higgsfield.js +1 -1
- package/lib/actions/imageGeneration.js +1 -1
- package/lib/actions/images.js +1 -1
- package/lib/actions/index.js +1 -1
- package/lib/actions/ios.js +1 -1
- package/lib/actions/locations.js +1 -1
- package/lib/actions/messages.js +1 -1
- package/lib/actions/notifications.js +1 -1
- package/lib/actions/ollamaGeneration.js +1 -1
- package/lib/actions/openaiResponseSession.js +1 -1
- package/lib/actions/payments.js +1 -1
- package/lib/actions/personas.js +1 -1
- package/lib/actions/phoneSupport.js +1 -1
- package/lib/actions/posts.js +1 -1
- package/lib/actions/query.js +1 -1
- package/lib/actions/reactions.js +1 -1
- package/lib/actions/rum.js +1 -1
- package/lib/actions/s3.js +1 -1
- package/lib/actions/search.js +1 -1
- package/lib/actions/sms.js +1 -1
- package/lib/actions/statistics.js +1 -1
- package/lib/actions/subscriptions.js +1 -1
- package/lib/actions/tags.js +1 -1
- package/lib/actions/users.js +1 -1
- package/lib/actions/videoGeneration.js +1 -1
- package/lib/actions/videos.js +1 -1
- package/lib/adapters/arangoAdapter.js +1 -1
- package/lib/adapters/contentAdapter.js +1 -1
- package/lib/adapters/fileAdapter.js +1 -1
- package/lib/adapters/geminiGenerationAdapter.js +1 -1
- package/lib/adapters/higgsfieldAdapter.js +1 -1
- package/lib/adapters/higgsfieldModelCatalog.js +1 -1
- package/lib/adapters/higgsfieldModels.js +1 -1
- package/lib/adapters/imageAdapter.js +1 -1
- package/lib/adapters/imageGenerationAdapter.js +1 -1
- package/lib/adapters/index.js +1 -1
- package/lib/adapters/messageAdapter.js +1 -1
- package/lib/adapters/postAdapter.js +1 -1
- package/lib/adapters/reaktorAdapter.js +1 -1
- package/lib/adapters/tagAdapter.js +1 -1
- package/lib/adapters/userAdapter.js +1 -1
- package/lib/assistant/core.js +1 -1
- package/lib/assistant/faq.js +1 -1
- package/lib/assistant/faqCore.js +1 -1
- package/lib/assistant/index.js +1 -1
- package/lib/assistant/service.js +1 -1
- package/lib/config.js +1 -1
- package/lib/constants/collections.js +1 -1
- package/lib/durableChat/conversations.js +1 -1
- package/lib/durableChat/errors.js +1 -1
- package/lib/durableChat/events.js +1 -1
- package/lib/durableChat/index.js +1 -1
- package/lib/durableChat/membership.js +1 -1
- package/lib/durableChat/messageTypes.js +1 -1
- package/lib/durableChat/messages.js +1 -1
- package/lib/durableChat/transaction.js +1 -1
- package/lib/durableChat/types.js +1 -1
- package/lib/handlers/graphqlHandler.js +1 -1
- package/lib/index.js +1 -1
- package/lib/lambdas/actions/websockets.js +1 -1
- package/lib/lambdas/authorizer.js +1 -1
- package/lib/lambdas/connection.js +1 -1
- package/lib/lambdas/utils/message.js +1 -1
- package/lib/lambdas/utils/websocket.js +1 -1
- package/lib/mocks/conversation.js +1 -1
- package/lib/mocks/file.js +1 -1
- package/lib/mocks/group.js +1 -1
- package/lib/mocks/image.js +1 -1
- package/lib/mocks/post.js +1 -1
- package/lib/mocks/tag.js +1 -1
- package/lib/mocks/user.js +1 -1
- package/lib/mocks/video.js +1 -1
- package/lib/mutations/analytics/analytics.js +1 -1
- package/lib/mutations/content/content.js +1 -1
- package/lib/mutations/crm/crm.js +1 -1
- package/lib/mutations/events/events.js +1 -1
- package/lib/mutations/flags/flags.js +1 -1
- package/lib/mutations/groups/groups.js +1 -1
- package/lib/mutations/higgsfield/higgsfield.js +1 -1
- package/lib/mutations/images/images.js +1 -1
- package/lib/mutations/index.js +1 -1
- package/lib/mutations/locations/locations.js +1 -1
- package/lib/mutations/messages/messages.js +1 -1
- package/lib/mutations/personas/personas.js +1 -1
- package/lib/mutations/posts/posts.js +1 -1
- package/lib/mutations/reactions/reactions.js +1 -1
- package/lib/mutations/rum/rum.js +1 -1
- package/lib/mutations/statistics/statistics.js +1 -1
- package/lib/mutations/subscriptions/subscriptions.js +1 -1
- package/lib/mutations/tags/tags.js +1 -1
- package/lib/mutations/users/users.js +1 -1
- package/lib/mutations/videos/videos.js +1 -1
- package/lib/nativePush/graphql.js +1 -1
- package/lib/nativePush/index.js +1 -1
- package/lib/nativePush/migrations.js +1 -1
- package/lib/nativePush/nativePushContract.fixture.js +1 -1
- package/lib/nativePush/payload.js +1 -1
- package/lib/nativePush/repository.js +1 -1
- package/lib/nativePush/service.js +1 -1
- package/lib/nativePush/snsProvider.js +1 -1
- package/lib/nativePush/types.js +1 -1
- package/lib/objectTypes/analytics.js +1 -1
- package/lib/objectTypes/app.js +1 -1
- package/lib/objectTypes/bankAccount.js +1 -1
- package/lib/objectTypes/connection.js +1 -1
- package/lib/objectTypes/content.js +1 -1
- package/lib/objectTypes/contentGeneration.js +1 -1
- package/lib/objectTypes/conversation.js +1 -1
- package/lib/objectTypes/creditCard.js +1 -1
- package/lib/objectTypes/crm.js +1 -1
- package/lib/objectTypes/document.js +1 -1
- package/lib/objectTypes/error.js +1 -1
- package/lib/objectTypes/event.js +1 -1
- package/lib/objectTypes/external.js +1 -1
- package/lib/objectTypes/file.js +1 -1
- package/lib/objectTypes/filter.js +1 -1
- package/lib/objectTypes/flag.js +1 -1
- package/lib/objectTypes/group.js +1 -1
- package/lib/objectTypes/higgsfield.js +1 -1
- package/lib/objectTypes/iapSubscription.js +1 -1
- package/lib/objectTypes/image.js +1 -1
- package/lib/objectTypes/imageGeneration.js +1 -1
- package/lib/objectTypes/index.js +1 -1
- package/lib/objectTypes/location.js +1 -1
- package/lib/objectTypes/message.js +1 -1
- package/lib/objectTypes/passcode.js +1 -1
- package/lib/objectTypes/persona.js +1 -1
- package/lib/objectTypes/plan.js +1 -1
- package/lib/objectTypes/post.js +1 -1
- package/lib/objectTypes/query.js +1 -1
- package/lib/objectTypes/reaction.js +1 -1
- package/lib/objectTypes/relation.js +1 -1
- package/lib/objectTypes/rum.js +1 -1
- package/lib/objectTypes/search.js +1 -1
- package/lib/objectTypes/statistics.js +1 -1
- package/lib/objectTypes/subscription.js +1 -1
- package/lib/objectTypes/tag.js +1 -1
- package/lib/objectTypes/user.js +1 -1
- package/lib/objectTypes/video.js +1 -1
- package/lib/objectTypes/videoGeneration.js +1 -1
- package/lib/organizations/accountLifecycle.js +1 -1
- package/lib/organizations/authorization.js +1 -1
- package/lib/organizations/billing.js +1 -1
- package/lib/organizations/billingProvider.js +1 -1
- package/lib/organizations/billingUpdates.js +1 -1
- package/lib/organizations/index.js +1 -1
- package/lib/organizations/mail.js +1 -1
- package/lib/organizations/memberDirectory.js +1 -1
- package/lib/organizations/membership.js +1 -1
- package/lib/organizations/passwordRecovery.js +1 -1
- package/lib/organizations/plans.js +1 -1
- package/lib/organizations/providerPagination.js +1 -1
- package/lib/organizations/reconciliation.js +1 -1
- package/lib/organizations/signup.js +1 -1
- package/lib/organizations/store.js +1 -1
- package/lib/organizations/types.js +1 -1
- package/lib/organizations/verification.js +1 -1
- package/lib/queries/analytics/analytics.js +1 -1
- package/lib/queries/content/content.js +1 -1
- package/lib/queries/crm/crm.js +1 -1
- package/lib/queries/events/events.js +1 -1
- package/lib/queries/flags/flags.js +1 -1
- package/lib/queries/groups/groups.js +1 -1
- package/lib/queries/higgsfield/higgsfield.js +1 -1
- package/lib/queries/images/images.js +1 -1
- package/lib/queries/index.js +1 -1
- package/lib/queries/locations/locations.js +1 -1
- package/lib/queries/messages/messages.js +1 -1
- package/lib/queries/personas/personas.js +1 -1
- package/lib/queries/posts/posts.js +1 -1
- package/lib/queries/query/query.js +1 -1
- package/lib/queries/reactions/reactions.js +1 -1
- package/lib/queries/statistics/statistics.js +1 -1
- package/lib/queries/subscriptions/subscriptions.js +1 -1
- package/lib/queries/tags/tags.js +1 -1
- package/lib/queries/users/users.js +1 -1
- package/lib/queries/videos/videos.js +1 -1
- package/lib/templates/email/layout.js +1 -1
- package/lib/templates/email/passwordForgot.js +1 -1
- package/lib/templates/email/passwordRecovery.js +1 -1
- package/lib/templates/email/verifyEmail.js +1 -1
- package/lib/templates/email/welcome.js +1 -1
- package/lib/templates/sms/passwordForgot.js +1 -1
- package/lib/templates/sms/passwordRecovery.js +1 -1
- package/lib/templates/sms/verifyEmail.js +1 -1
- package/lib/templates/sms/verifyPhone.js +1 -1
- package/lib/templates/sms/welcome.js +1 -1
- package/lib/types/analytics.types.js +1 -1
- package/lib/types/apps.types.js +1 -1
- package/lib/types/arangodb.types.js +1 -1
- package/lib/types/auth.types.js +1 -1
- package/lib/types/connections.types.js +1 -1
- package/lib/types/content.types.js +1 -1
- package/lib/types/conversations.types.js +1 -1
- package/lib/types/crm.types.js +1 -1
- package/lib/types/databaseCredentials.types.js +1 -1
- package/lib/types/email.types.js +1 -1
- package/lib/types/error.types.js +1 -1
- package/lib/types/files.types.js +1 -1
- package/lib/types/flags.types.js +1 -1
- package/lib/types/google.types.js +1 -1
- package/lib/types/groups.types.js +1 -1
- package/lib/types/images.types.js +1 -1
- package/lib/types/index.js +1 -1
- package/lib/types/locations.types.js +1 -1
- package/lib/types/messages.types.js +1 -1
- package/lib/types/notifications.types.js +1 -1
- package/lib/types/payments.types.js +1 -1
- package/lib/types/personas.types.js +1 -1
- package/lib/types/posts.types.js +1 -1
- package/lib/types/rum.types.js +1 -1
- package/lib/types/statistics.types.js +1 -1
- package/lib/types/tags.types.js +1 -1
- package/lib/types/users.types.js +1 -1
- package/lib/types/videos.types.js +1 -1
- package/lib/types/websockets.types.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/adapterUtils.js +1 -1
- package/lib/utils/analyticsUtils.js +1 -1
- package/lib/utils/appContext.js +1 -1
- package/lib/utils/aqlHelpers.js +1 -1
- package/lib/utils/arangodbUtils.js +1 -1
- package/lib/utils/authUtils.js +1 -1
- package/lib/utils/awsUtils.js +1 -1
- package/lib/utils/collectionRegistry.js +1 -1
- package/lib/utils/contextUtils.js +1 -1
- package/lib/utils/databaseCredentials.js +1 -1
- package/lib/utils/dbI18n.example.js +1 -1
- package/lib/utils/dbI18n.js +1 -1
- package/lib/utils/generationCallback.js +1 -1
- package/lib/utils/googleTranslate.js +1 -1
- package/lib/utils/graphqlUtils.js +1 -1
- package/lib/utils/imageUtils.js +1 -1
- package/lib/utils/index.js +1 -1
- package/lib/utils/languageDetection.js +1 -1
- package/lib/utils/localeUtils.example.js +1 -1
- package/lib/utils/localeUtils.js +1 -1
- package/lib/utils/mediaAccess.js +1 -1
- package/lib/utils/middlewareUtils.js +1 -1
- package/lib/utils/nodeRealtime.js +1 -1
- package/lib/utils/opaqueToken.js +1 -1
- package/lib/utils/queryBuilder.js +1 -1
- package/lib/utils/schemaUtils.js +1 -1
- package/lib/utils/secretDatabase.js +1 -1
- package/lib/utils/sessionUtils.js +1 -1
- package/lib/utils/stripeUtils.js +1 -1
- package/lib/utils/stripeUtils.ts.bak +1 -1
- package/lib/utils/templateUtils.js +1 -1
- package/lib/utils/testUtils.js +1 -1
- package/lib/utils/translationQueue.example.js +1 -1
- package/lib/utils/translationQueue.js +1 -1
- package/lib/videoProcessing.js +1 -1
- package/package.json +1 -1
|
@@ -726,4 +726,4 @@ export const createDurableConversationActions = (identity, repository)=>{
|
|
|
726
726
|
};
|
|
727
727
|
};
|
|
728
728
|
|
|
729
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvY29udmVyc2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wLCBuby11bmRlcnNjb3JlLWRhbmdsZSAtLSBPcmRlcmVkIHRyYW5zYWN0aW9ucyBhbmQgQXJhbmdvIGlkZW50aXRpZXMuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHJhbmRvbVVVSUR9IGZyb20gJ25vZGU6Y3J5cHRvJztcblxuaW1wb3J0IHtDaGF0RXJyb3J9IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7YXBwZW5kQ2hhdEV2ZW50fSBmcm9tICcuL2V2ZW50cy5qcyc7XG5pbXBvcnQge2NyZWF0ZU1lbWJlcnNoaXBBdXRob3JpemVyLCBpc0NoYXRJZGVudGlmaWVyfSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuaW1wb3J0IHtjcmVhdGVEdXJhYmxlVHJhbnNhY3Rpb259IGZyb20gJy4vdHJhbnNhY3Rpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXV0aG9yaXplZE1lbWJlcnNoaXAsIENoYXRJZGVudGl0eSwgQ2hhdFF1ZXJ5fSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBY2NlcHRJbnZpdGVJbnB1dCwgQ2hhbmdlTWVtYmVyUm9sZUlucHV0LCBDb252ZXJzYXRpb25JbnZpdGUsIENvbnZlcnNhdGlvbk1lbWJlcnNoaXAsXG4gIENvbnZlcnNhdGlvblN1bW1hcnksIENyZWF0ZURpcmVjdElucHV0LCBDcmVhdGVHcm91cElucHV0LCBJbnZpdGVNZW1iZXJJbnB1dCxcbiAgTGVhdmVDb252ZXJzYXRpb25JbnB1dCwgTWVtYmVyc2hpcFJvbGUsIFJlbW92ZU1lbWJlcklucHV0LCBUcmFuc2Zlck93bmVyc2hpcElucHV0XG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvblJlY29yZCB7XG4gIHJlYWRvbmx5IF9rZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aXZlTWVtYmVyQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgY2hhdFNjaGVtYVZlcnNpb246IG51bWJlcjtcbiAgcmVhZG9ubHkga2luZDogJ2RpcmVjdCcgfCAnZ3JvdXAnO1xuICByZWFkb25seSBsYXN0U2VxdWVuY2U6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcFJldmlzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVDb250ZW50VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZURlY2lzaW9uPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgc3RhdGU6ICdhY3RpdmUnIHwgJ2Nsb3NlZCcgfCAnZm9ybWluZyc7XG59XG5pbnRlcmZhY2UgTWVtYmVyUmVjb3JkIGV4dGVuZHMgQ29udmVyc2F0aW9uTWVtYmVyc2hpcCB7XG4gIHJlYWRvbmx5IF9rZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgSW52aXRlUmVjb3JkIGV4dGVuZHMgQ29udmVyc2F0aW9uSW52aXRlIHtcbiAgcmVhZG9ubHkgX2tleTogc3RyaW5nO1xuICByZWFkb25seSBpbnZpdGVlUGVyc29uYUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGludml0ZWVVc2VySWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdExpc3RJbnB1dCB7XG4gIHJlYWRvbmx5IGFmdGVyPzogc3RyaW5nO1xuICByZWFkb25seSBsaW1pdD86IG51bWJlcjtcbn1cbmNvbnN0IGhhc2ggPSAoaW5wdXQ6IHVua25vd24pOiBzdHJpbmcgPT4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KGlucHV0KSkuZGlnZXN0KCdoZXgnKTtcbmNvbnN0IGludml0ZU1pbGxpc2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgbWVtYmVyc2hpcER0byA9IChyZWNvcmQ6IENvbnZlcnNhdGlvbk1lbWJlcnNoaXApOiBDb252ZXJzYXRpb25NZW1iZXJzaGlwID0+ICh7XG4gIGNvbnZlcnNhdGlvbklkOiByZWNvcmQuY29udmVyc2F0aW9uSWQsIGVwb2NoOiByZWNvcmQuZXBvY2gsIGpvaW5TZXF1ZW5jZTogcmVjb3JkLmpvaW5TZXF1ZW5jZSxcbiAgbGVmdFNlcXVlbmNlOiByZWNvcmQubGVmdFNlcXVlbmNlLCBwZXJzb25hSWQ6IHJlY29yZC5wZXJzb25hSWQsIHJldmlzaW9uOiByZWNvcmQucmV2aXNpb24sXG4gIHJvbGU6IHJlY29yZC5yb2xlLCBzdGF0ZTogcmVjb3JkLnN0YXRlXG59KTtcbmNvbnN0IGludml0ZUR0byA9IChyZWNvcmQ6IEludml0ZVJlY29yZCk6IENvbnZlcnNhdGlvbkludml0ZSA9PiAoe1xuICBjb252ZXJzYXRpb25JZDogcmVjb3JkLmNvbnZlcnNhdGlvbklkLCBleHBpcmVzQXQ6IHJlY29yZC5leHBpcmVzQXQsIGludml0ZUlkOiByZWNvcmQuX2tleSxcbiAgaW52aXRlZEJ5UGVyc29uYUlkOiByZWNvcmQuaW52aXRlZEJ5UGVyc29uYUlkLCByZXZpc2lvbjogcmVjb3JkLnJldmlzaW9uLCBzdGF0ZTogcmVjb3JkLnN0YXRlXG59KTtcbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZUNvbnZlcnNhdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBhdWRpZW5jZT86ICdtb2JpbGUnIHwgJ3dlYic7XG4gIC8qKiBBbGwgcG9saWN5IHJlYWRzIG11c3QgdXNlIHRoaXMgcXVlcnk7IGV4Y2VwdGlvbnMgZmFpbCB0aGUgdHJhbnNhY3Rpb24uICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZUlkZW50aXR5OiAocmVhZDogQ2hhdFF1ZXJ5LCBpZGVudGl0eTogQ2hhdElkZW50aXR5KSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBjbGFzc2lmeU5hbWU6IChuYW1lOiBzdHJpbmcsIGNvbnRlbnRWZXJzaW9uOiBzdHJpbmcpID0+IHVua25vd247XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiAoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25SZWNvcmQsIGF1ZGllbmNlOiAnbW9iaWxlJyB8ICd3ZWInKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IHJlYWRDb2xsZWN0aW9ucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogQ2FsbGVyIG93bnMgdHJhbnNhY3Rpb24vbG9ja3MvY29tbWl0IHdoZW4gc3VwcGxpZWQ7IG5vIGluZGVwZW5kZW50IGRhdGFiYXNlIGFjY2VzcyBvY2N1cnMuICovXG4gIHJlYWRvbmx5IHF1ZXJ5PzogQ2hhdFF1ZXJ5O1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlRHVyYWJsZUNvbnZlcnNhdGlvblJlcG9zaXRvcnkgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsIGlkZW50aXR5OiBDaGF0SWRlbnRpdHksIG9wdGlvbnM6IER1cmFibGVDb252ZXJzYXRpb25PcHRpb25zXG4pID0+IHtcbiAgY29uc3QgYXVkaWVuY2UgPSBvcHRpb25zLmF1ZGllbmNlIHx8ICdtb2JpbGUnO1xuICBjb25zdCB0cmFuc2FjdCA9IGNyZWF0ZUR1cmFibGVUcmFuc2FjdGlvbihjb250ZXh0LCB7ZXhjbHVzaXZlOiBbXG4gICAgJ2NoYXRJbnZpdGVzJywgJ2NoYXRPdXRib3gnLCAnY2hhdFJhdGVMaW1pdHMnLCAnY2hhdFJlcXVlc3RzJywgJ2NvbnZlcnNhdGlvbnMnLCAnaGFzQ2hhdE1lbWJlcnNoaXAnLCAnaGFzQ29udmVyc2F0aW9uJ1xuICBdLCByZWFkOiBbJ2hhc0Nvbm5lY3Rpb24nLCAncGVyc29uYXMnLCAndXNlcnMnLCAuLi4ob3B0aW9ucy5yZWFkQ29sbGVjdGlvbnMgfHwgW10pXX0sIG9wdGlvbnMucXVlcnkpO1xuICBjb25zdCBzdW1tYXJ5ID0gKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uUmVjb3JkLCBtZW1iZXI6IENvbnZlcnNhdGlvbk1lbWJlcnNoaXAsXG4gICAgYXVkaWVuY2U6ICdtb2JpbGUnIHwgJ3dlYicsIGluY2x1ZGVOYW1lID0gZmFsc2UpOiBDb252ZXJzYXRpb25TdW1tYXJ5ID0+ICh7XG4gICAgYWN0aXZlTWVtYmVyQ291bnQ6IGNvbnZlcnNhdGlvbi5hY3RpdmVNZW1iZXJDb3VudCwgY29udmVyc2F0aW9uSWQ6IGNvbnZlcnNhdGlvbi5fa2V5LFxuICAgIGtpbmQ6IGNvbnZlcnNhdGlvbi5raW5kLCBtZW1iZXJzaGlwOiBtZW1iZXJzaGlwRHRvKG1lbWJlciksIG1lbWJlcnNoaXBSZXZpc2lvbjogY29udmVyc2F0aW9uLm1lbWJlcnNoaXBSZXZpc2lvbixcbiAgICBuYW1lOiBpbmNsdWRlTmFtZSA/IG9wdGlvbnMucHJvamVjdE5hbWUoY29udmVyc2F0aW9uLCBhdWRpZW5jZSkgOiB1bmRlZmluZWQsIHN0YXRlOiBjb252ZXJzYXRpb24uc3RhdGVcbiAgfSk7XG4gIGNvbnN0IGFjdG9yID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGFsbG93ZWQgPSBhd2FpdCByZWFkPGJvb2xlYW4+KGBMRVQgcGVyc29uYSA9IERPQ1VNRU5UKCdwZXJzb25hcycsIEBwZXJzb25hSWQpXG4gICAgICBMRVQgdXNlciA9IERPQ1VNRU5UKCd1c2VycycsIEB1c2VySWQpXG4gICAgICBSRVRVUk4gcGVyc29uYSAhPSBudWxsIEFORCBwZXJzb25hLnVzZXJJZCA9PSBAdXNlcklkIEFORCBwZXJzb25hLmFjdGl2ZSAhPSBmYWxzZVxuICAgICAgICBBTkQgdXNlciAhPSBudWxsIEFORCB1c2VyLmFjdGl2ZSAhPSBmYWxzZWAsIHsuLi5pZGVudGl0eX0pO1xuICAgIGlmKGFsbG93ZWQgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICBhd2FpdCBhZHVsdChyZWFkLCBpZGVudGl0eSk7XG4gIH07XG4gIGNvbnN0IGFkdWx0ID0gKHJlYWQ6IENoYXRRdWVyeSwgd2hvOiBDaGF0SWRlbnRpdHkpOiBQcm9taXNlPHZvaWQ+ID0+IG9wdGlvbnMuYXV0aG9yaXplSWRlbnRpdHkocmVhZCwgd2hvKTtcbiAgY29uc3QgY29ubmVjdGVkID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSwgZnJvbTogQ2hhdElkZW50aXR5LCBwZXJzb25hSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdElkZW50aXR5PiA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgcmVhZDxDaGF0SWRlbnRpdHk+KGBMRVQgcGVyc29uYSA9IERPQ1VNRU5UKCdwZXJzb25hcycsIEBwZXJzb25hSWQpXG4gICAgICBMRVQgdXNlciA9IERPQ1VNRU5UKCd1c2VycycsIHBlcnNvbmEudXNlcklkKVxuICAgICAgTEVUIGZvbGxvd2luZyA9IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UuX2Zyb20gPT0gQGZyb20gQU5EIGVkZ2UuX3RvID09IEB0b1xuICAgICAgICBBTkQgZWRnZS50eXBlID09ICdmb2xsb3cnIEFORCBlZGdlLmFjdGl2ZSAhPSBmYWxzZSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgTEVUIGZvbGxvd2VkID0gRklSU1QoRk9SIGVkZ2UgSU4gaGFzQ29ubmVjdGlvbiBGSUxURVIgZWRnZS5fdG8gPT0gQGZyb20gQU5EIGVkZ2UuX2Zyb20gPT0gQHRvXG4gICAgICAgIEFORCBlZGdlLnR5cGUgPT0gJ2ZvbGxvdycgQU5EIGVkZ2UuYWN0aXZlICE9IGZhbHNlIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgICBMRVQgYmxvY2tlZCA9IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UudHlwZSA9PSAnYmxvY2snXG4gICAgICAgIEFORCAoKGVkZ2UuX2Zyb20gSU4gW0Bmcm9tLCBAZnJvbVVzZXJdIEFORCBlZGdlLl90byBJTiBbQHRvLCBDT05DQVQoJ3VzZXJzLycsIHBlcnNvbmEudXNlcklkKV0pXG4gICAgICAgICAgT1IgKGVkZ2UuX3RvIElOIFtAZnJvbSwgQGZyb21Vc2VyXSBBTkQgZWRnZS5fZnJvbSBJTiBbQHRvLCBDT05DQVQoJ3VzZXJzLycsIHBlcnNvbmEudXNlcklkKV0pKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgRklMVEVSIHBlcnNvbmEgIT0gbnVsbCBBTkQgdXNlciAhPSBudWxsIEFORCBwZXJzb25hLmFjdGl2ZSAhPSBmYWxzZSBBTkQgdXNlci5hY3RpdmUgIT0gZmFsc2VcbiAgICAgICAgQU5EIHBlcnNvbmEudXNlcklkICE9IEBhY3RvclVzZXIgQU5EIGZvbGxvd2luZyA9PSB0cnVlIEFORCBmb2xsb3dlZCA9PSB0cnVlIEFORCBibG9ja2VkICE9IHRydWVcbiAgICAgIFJFVFVSTiB7cGVyc29uYUlkOiBAcGVyc29uYUlkLCB1c2VySWQ6IHBlcnNvbmEudXNlcklkfWAsIHtcbiAgICAgIGFjdG9yVXNlcjogZnJvbS51c2VySWQsIGZyb206IGBwZXJzb25hcy8ke2Zyb20ucGVyc29uYUlkfWAsIGZyb21Vc2VyOiBgdXNlcnMvJHtmcm9tLnVzZXJJZH1gLFxuICAgICAgcGVyc29uYUlkLCB0bzogYHBlcnNvbmFzLyR7cGVyc29uYUlkfWBcbiAgICB9KTtcbiAgICBpZighdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICB9XG4gICAgYXdhaXQgYWR1bHQocmVhZCwgdGFyZ2V0KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICBjb25zdCBjb252ZXJzYXRpb24gPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBpZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25SZWNvcmQ+ID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHJlYWQ8Q29udmVyc2F0aW9uUmVjb3JkPignUkVUVVJOIERPQ1VNRU5UKFwiY29udmVyc2F0aW9uc1wiLCBAaWQpJywge2lkfSk7XG4gICAgaWYoIXZhbHVlIHx8IHZhbHVlLmNoYXRTY2hlbWFWZXJzaW9uICE9PSAxIHx8IHZhbHVlLnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignZm9yYmlkZGVuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbiAgY29uc3QgbWVtYmVyID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSwgY29udmVyc2F0aW9uSWQ6IHN0cmluZywgcGVyc29uYUlkOiBzdHJpbmcpOiBQcm9taXNlPE1lbWJlclJlY29yZD4gPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcmVhZDxNZW1iZXJSZWNvcmQ+KGBGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwIEZJTFRFUiBtZW1iZXIuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkXG4gICAgICBBTkQgbWVtYmVyLnBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBtZW1iZXIuc3RhdGUgPT0gJ2FjdGl2ZScgTElNSVQgMSBSRVRVUk4gbWVtYmVyYCwge2NvbnZlcnNhdGlvbklkLCBwZXJzb25hSWR9KTtcbiAgICBpZighdmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG4gIGNvbnN0IGFjY2VzcyA9IChyZWFkOiBDaGF0UXVlcnksIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIHB1cnBvc2U6ICdpbnZpdGUnIHwgJ3BhcnRpY2lwYW50cycgPSAncGFydGljaXBhbnRzJykgPT5cbiAgICBjcmVhdGVNZW1iZXJzaGlwQXV0aG9yaXplcihyZWFkKShpZGVudGl0eSwge2NvbnZlcnNhdGlvbklkLCBwdXJwb3NlfSk7XG4gIGNvbnN0IGNoZWNrUmV2aXNpb24gPSAoZW50cnk6IEF1dGhvcml6ZWRNZW1iZXJzaGlwLCBleHBlY3RlZDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYoZW50cnkubWVtYmVyc2hpcFJldmlzaW9uICE9PSBleHBlY3RlZCB8fCBlbnRyeS5raW5kICE9PSAnZ3JvdXAnKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdjb25mbGljdCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZXZlbnQgPSBhc3luYyAoXG4gICAgcmVhZDogQ2hhdFF1ZXJ5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nLCBlcG9jaDogc3RyaW5nLCByZXNvdXJjZUlkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXJcbiAgKSA9PiB7XG4gICAgYXdhaXQgYXBwZW5kQ2hhdEV2ZW50KHJlYWQsIHthY3RvclBlcnNvbmFJZDogaWRlbnRpdHkucGVyc29uYUlkLCBjb252ZXJzYXRpb25JZCwga2luZDogJ21lbWJlcnNoaXAuY2hhbmdlZCcsXG4gICAgICAuLi4oZXBvY2ggPyB7bWVtYmVyc2hpcEVwb2NoOiBlcG9jaH0gOiB7fSksIHJlc291cmNlSWQsIHJldmlzaW9ufSk7XG4gIH07XG4gIGNvbnN0IHJlY2VpcHQgPSBhc3luYyA8VD4ocmVhZDogQ2hhdFF1ZXJ5LCBhY3Rpb246IHN0cmluZywgaW5wdXQ6IHtyZWFkb25seSBpZGVtcG90ZW5jeUtleTogc3RyaW5nfSkgPT4ge1xuICAgIGNvbnN0IGtleSA9IGhhc2goW2lkZW50aXR5LnVzZXJJZCwgaWRlbnRpdHkucGVyc29uYUlkLCBhY3Rpb24sIGlucHV0LmlkZW1wb3RlbmN5S2V5XSk7XG4gICAgY29uc3QgcGF5bG9hZEhhc2ggPSBoYXNoKGlucHV0KTtcbiAgICBjb25zdCBwcmlvciA9IGF3YWl0IHJlYWQ8e3JlYWRvbmx5IHBheWxvYWRIYXNoOiBzdHJpbmc7IHJlYWRvbmx5IHJlc3VsdDogVH0+KCdSRVRVUk4gRE9DVU1FTlQoXCJjaGF0UmVxdWVzdHNcIiwgQGtleSknLCB7a2V5fSk7XG4gICAgaWYocHJpb3IgJiYgcHJpb3IucGF5bG9hZEhhc2ggIT09IHBheWxvYWRIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdjb25mbGljdCcpO1xuICAgIH1cbiAgICByZXR1cm4ge3ByaW9yOiBwcmlvcj8ucmVzdWx0LCBzYXZlOiAocmVzdWx0OiBUKSA9PiByZWFkKCdJTlNFUlQgQHJlY29yZCBJTiBjaGF0UmVxdWVzdHMgUkVUVVJOIHRydWUnLCB7XG4gICAgICByZWNvcmQ6IHtfa2V5OiBrZXksIGFkZGVkOiBEYXRlLm5vdygpLCBvd25lclVzZXJJZDogaWRlbnRpdHkudXNlcklkLCBwYXlsb2FkSGFzaCxcbiAgICAgICAgcGVyc29uYUlkOiBpZGVudGl0eS5wZXJzb25hSWQsIHJlc3VsdH1cbiAgICB9KX07XG4gIH07XG4gIGNvbnN0IHJhdGVMaW1pdCA9IGFzeW5jIChyZWFkOiBDaGF0UXVlcnkpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBrZXkgPSBoYXNoKFtpZGVudGl0eS51c2VySWQsIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDM2MDAwMDApXSk7XG4gICAgY29uc3QgYWxsb3dlZCA9IGF3YWl0IHJlYWQ8Ym9vbGVhbj4oYExFVCBidWNrZXQgPSBET0NVTUVOVCgnY2hhdFJhdGVMaW1pdHMnLCBAa2V5KVxuICAgICAgRklMVEVSIGJ1Y2tldCA9PSBudWxsIE9SIGJ1Y2tldC5jb3VudCA8IDUwXG4gICAgICBVUFNFUlQge19rZXk6IEBrZXl9IElOU0VSVCB7X2tleTogQGtleSwgY291bnQ6IDEsIHVzZXJJZDogQHVzZXJJZH0gVVBEQVRFIHtjb3VudDogT0xELmNvdW50ICsgMSwgdXNlcklkOiBAdXNlcklkfVxuICAgICAgSU4gY2hhdFJhdGVMaW1pdHMgUkVUVVJOIHRydWVgLCB7a2V5LCB1c2VySWQ6IGlkZW50aXR5LnVzZXJJZH0pO1xuICAgIGlmKGFsbG93ZWQgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3JhdGVfbGltaXRlZCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYWRkTWVtYmVyID0gYXN5bmMgKFxuICAgIHJlYWQ6IENoYXRRdWVyeSwgY29udmVyc2F0aW9uSWQ6IHN0cmluZywgd2hvOiBDaGF0SWRlbnRpdHksIHJvbGU6IE1lbWJlcnNoaXBSb2xlLCBqb2luU2VxdWVuY2U6IG51bWJlclxuICApOiBQcm9taXNlPE1lbWJlclJlY29yZD4gPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IGV2ZW50U2VxdWVuY2UgPSBhd2FpdCByZWFkPG51bWJlcj4oXG4gICAgICAnUkVUVVJOIERPQ1VNRU5UKFwiY29udmVyc2F0aW9uc1wiLCBAY29udmVyc2F0aW9uSWQpLmxhc3RFdmVudFNlcXVlbmNlIHx8IDAnLCB7Y29udmVyc2F0aW9uSWR9KTtcbiAgICBjb25zdCByZWNvcmQgPSB7X2Zyb206IGBwZXJzb25hcy8ke3doby5wZXJzb25hSWR9YCwgX2tleTogaWQsIF90bzogYGNvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH1gLFxuICAgICAgYWNjZXB0ZWRBdDogRGF0ZS5ub3coKSwgY29udmVyc2F0aW9uSWQsIGN1cnJlbnRLZXk6IGAke2NvbnZlcnNhdGlvbklkfToke3doby5wZXJzb25hSWR9YCwgZXBvY2g6IHJhbmRvbVVVSUQoKSxcbiAgICAgIGpvaW5FdmVudFNlcXVlbmNlOiBqb2luU2VxdWVuY2UgPiAwID8gKGV2ZW50U2VxdWVuY2UgfHwgMCkgKyAxIDogMCwgam9pblNlcXVlbmNlLCBwZXJzb25hSWQ6IHdoby5wZXJzb25hSWQsIHJldmlzaW9uOiAxLCByb2xlLCBzdGF0ZTogJ2FjdGl2ZScgYXMgY29uc3QsIHVzZXJJZDogd2hvLnVzZXJJZH07XG4gICAgYXdhaXQgcmVhZCgnSU5TRVJUIEByZWNvcmQgSU4gaGFzQ2hhdE1lbWJlcnNoaXAgUkVUVVJOIHRydWUnLCB7cmVjb3JkfSk7XG4gICAgYXdhaXQgcmVhZChgVVBTRVJUIHtfZnJvbTogQGZyb20sIF90bzogQHRvfVxuICAgICAgSU5TRVJUIHtfZnJvbTogQGZyb20sIF90bzogQHRvLCBhZGRlZDogQG5vdywgY29udmVyc2F0aW9uSWQ6IEBjb252ZXJzYXRpb25JZCwgdXNlcklkOiBAdXNlcklkfVxuICAgICAgVVBEQVRFIHt9IElOIGhhc0NvbnZlcnNhdGlvbiBSRVRVUk4gdHJ1ZWAsIHtcbiAgICAgIGNvbnZlcnNhdGlvbklkLCBmcm9tOiBgdXNlcnMvJHt3aG8udXNlcklkfWAsIG5vdzogRGF0ZS5ub3coKSwgdG86IGBjb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YCwgdXNlcklkOiB3aG8udXNlcklkXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfTtcbiAgY29uc3QgYWRkSW52aXRlID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSwgY29udmVyc2F0aW9uSWQ6IHN0cmluZywgd2hvOiBDaGF0SWRlbnRpdHkpOiBQcm9taXNlPENvbnZlcnNhdGlvbkludml0ZT4gPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IHJlY29yZDogSW52aXRlUmVjb3JkID0ge19rZXk6IGlkLCBjb252ZXJzYXRpb25JZCwgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgaW52aXRlTWlsbGlzZWNvbmRzLFxuICAgICAgaW52aXRlSWQ6IGlkLCBpbnZpdGVkQnlQZXJzb25hSWQ6IGlkZW50aXR5LnBlcnNvbmFJZCwgaW52aXRlZVBlcnNvbmFJZDogd2hvLnBlcnNvbmFJZCwgaW52aXRlZVVzZXJJZDogd2hvLnVzZXJJZCwgcmV2aXNpb246IDEsIHN0YXRlOiAncGVuZGluZyd9O1xuICAgIGF3YWl0IHJlYWQoJ0lOU0VSVCBAcmVjb3JkIElOIGNoYXRJbnZpdGVzIFJFVFVSTiB0cnVlJywge3JlY29yZDogey4uLnJlY29yZCxcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSwgY3VycmVudEtleTogYCR7Y29udmVyc2F0aW9uSWR9OiR7d2hvLnBlcnNvbmFJZH1gLCByb2xlOiAnbWVtYmVyJ319KTtcbiAgICBhd2FpdCBldmVudChyZWFkLCBjb252ZXJzYXRpb25JZCwgJycsIGlkLCAxKTtcbiAgICByZXR1cm4gaW52aXRlRHRvKHJlY29yZCk7XG4gIH07XG4gIGNvbnN0IGV4cGlyZUludml0ZXMgPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgcmVhZChgRk9SIGludml0ZSBJTiBjaGF0SW52aXRlcyBGSUxURVIgaW52aXRlLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZFxuICAgICAgQU5EIGludml0ZS5zdGF0ZSA9PSAncGVuZGluZycgQU5EIGludml0ZS5leHBpcmVzQXQgPD0gQG5vd1xuICAgICAgVVBEQVRFIGludml0ZSBXSVRIIHtjdXJyZW50S2V5OiBudWxsLCByZXNvbHZlZEF0OiBAbm93LCByZXZpc2lvbjogaW52aXRlLnJldmlzaW9uICsgMSwgc3RhdGU6ICdleHBpcmVkJ31cbiAgICAgIElOIGNoYXRJbnZpdGVzIFJFVFVSTiB0cnVlYCwge2NvbnZlcnNhdGlvbklkLCBub3c6IERhdGUubm93KCl9KTtcbiAgfTtcbiAgY29uc3QgZ2V0T3JDcmVhdGVEaXJlY3QgPSAoaW5wdXQ6IENyZWF0ZURpcmVjdElucHV0KTogUHJvbWlzZTxDb252ZXJzYXRpb25TdW1tYXJ5PiA9PiB0cmFuc2FjdChhc3luYyAocmVhZCkgPT4ge1xuICAgIGF3YWl0IGFjdG9yKHJlYWQpO1xuICAgIGNvbnN0IHRhcmdldCA9IGF3YWl0IGNvbm5lY3RlZChyZWFkLCBpZGVudGl0eSwgaW5wdXQucGFydGljaXBhbnRQZXJzb25hSWQpO1xuICAgIGNvbnN0IHBhaXIgPSBoYXNoKFsnZGlyZWN0LXYxJywgLi4uW2lkZW50aXR5LnBlcnNvbmFJZCwgdGFyZ2V0LnBlcnNvbmFJZF0uc29ydCgpXSk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkPENvbnZlcnNhdGlvblJlY29yZD4oJ0ZPUiBjIElOIGNvbnZlcnNhdGlvbnMgRklMVEVSIGMuZGlyZWN0UGFpcktleSA9PSBAcGFpciBMSU1JVCAxIFJFVFVSTiBjJywge3BhaXJ9KTtcbiAgICBpZihleGlzdGluZykge1xuICAgICAgYXdhaXQgYWNjZXNzKHJlYWQsIGV4aXN0aW5nLl9rZXkpO1xuICAgICAgcmV0dXJuIHN1bW1hcnkoZXhpc3RpbmcsIGF3YWl0IG1lbWJlcihyZWFkLCBleGlzdGluZy5fa2V5LCBpZGVudGl0eS5wZXJzb25hSWQpLCBhdWRpZW5jZSk7XG4gICAgfVxuICAgIGF3YWl0IHJhdGVMaW1pdChyZWFkKTtcbiAgICBjb25zdCBpZCA9IGBkaXJlY3QtJHtwYWlyfWA7XG4gICAgY29uc3QgcmVjb3JkOiBDb252ZXJzYXRpb25SZWNvcmQgPSB7X2tleTogaWQsIGFjdGl2ZU1lbWJlckNvdW50OiAyLCBjaGF0U2NoZW1hVmVyc2lvbjogMSxcbiAgICAgIGtpbmQ6ICdkaXJlY3QnLCBsYXN0U2VxdWVuY2U6IDAsIG1lbWJlcnNoaXBSZXZpc2lvbjogMSwgc3RhdGU6ICdhY3RpdmUnfTtcbiAgICBhd2FpdCByZWFkKCdJTlNFUlQgQHJlY29yZCBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiB0cnVlJywge3JlY29yZDogey4uLnJlY29yZCxcbiAgICAgIGFkZGVkOiBEYXRlLm5vdygpLCBjcmVhdGVkQnlQZXJzb25hSWQ6IGlkZW50aXR5LnBlcnNvbmFJZCwgZGlyZWN0UGFpcktleTogcGFpciwgaXNEaXJlY3Q6IHRydWV9fSk7XG4gICAgY29uc3Qgb3duID0gYXdhaXQgYWRkTWVtYmVyKHJlYWQsIGlkLCBpZGVudGl0eSwgJ21lbWJlcicsIDApO1xuICAgIGF3YWl0IGFkZE1lbWJlcihyZWFkLCBpZCwgdGFyZ2V0LCAnbWVtYmVyJywgMCk7XG4gICAgYXdhaXQgZXZlbnQocmVhZCwgaWQsIG93bi5lcG9jaCwgaWQsIDEpO1xuICAgIHJldHVybiBzdW1tYXJ5KHJlY29yZCwgb3duLCBhdWRpZW5jZSk7XG4gIH0pO1xuICBjb25zdCBjcmVhdGVHcm91cCA9IChpbnB1dDogQ3JlYXRlR3JvdXBJbnB1dCk6IFByb21pc2U8Q29udmVyc2F0aW9uU3VtbWFyeT4gPT4gdHJhbnNhY3QoYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxDb252ZXJzYXRpb25TdW1tYXJ5PihyZWFkLCAnY3JlYXRlR3JvdXAnLCBpbnB1dCk7XG4gICAgaWYocmVxdWVzdC5wcmlvcikge1xuICAgICAgcmV0dXJuIHJlcXVlc3QucHJpb3I7XG4gICAgfVxuICAgIGF3YWl0IHJhdGVMaW1pdChyZWFkKTtcbiAgICBjb25zdCB0YXJnZXRzOiBDaGF0SWRlbnRpdHlbXSA9IFtdO1xuICAgIGZvcihjb25zdCBwZXJzb25hSWQgb2YgaW5wdXQubWVtYmVyUGVyc29uYUlkcykge1xuICAgICAgdGFyZ2V0cy5wdXNoKGF3YWl0IGNvbm5lY3RlZChyZWFkLCBpZGVudGl0eSwgcGVyc29uYUlkKSk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IGNvbnRlbnRWZXJzaW9uID0gaGFzaChbJ2dyb3VwLW5hbWUnLCBpbnB1dC5uYW1lXSk7XG4gICAgY29uc3QgcmVjb3JkOiBDb252ZXJzYXRpb25SZWNvcmQgPSB7X2tleTogaWQsIGFjdGl2ZU1lbWJlckNvdW50OiAxLCBjaGF0U2NoZW1hVmVyc2lvbjogMSwga2luZDogJ2dyb3VwJyxcbiAgICAgIGxhc3RTZXF1ZW5jZTogMCwgbWVtYmVyc2hpcFJldmlzaW9uOiAxLCBuYW1lOiBpbnB1dC5uYW1lLCBuYW1lQ29udGVudFZlcnNpb246IGNvbnRlbnRWZXJzaW9uLFxuICAgICAgbmFtZURlY2lzaW9uOiBvcHRpb25zLmNsYXNzaWZ5TmFtZShpbnB1dC5uYW1lLCBjb250ZW50VmVyc2lvbiksIHN0YXRlOiAnZm9ybWluZyd9O1xuICAgIGF3YWl0IHJlYWQoJ0lOU0VSVCBAcmVjb3JkIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIHRydWUnLCB7cmVjb3JkOiB7Li4ucmVjb3JkLFxuICAgICAgYWRkZWQ6IERhdGUubm93KCksIGNyZWF0ZWRCeVBlcnNvbmFJZDogaWRlbnRpdHkucGVyc29uYUlkLCBpc0RpcmVjdDogZmFsc2V9fSk7XG4gICAgY29uc3Qgb3duID0gYXdhaXQgYWRkTWVtYmVyKHJlYWQsIGlkLCBpZGVudGl0eSwgJ293bmVyJywgMCk7XG4gICAgZm9yKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgICBhd2FpdCBhZGRJbnZpdGUocmVhZCwgaWQsIHRhcmdldCk7XG4gICAgfVxuICAgIGF3YWl0IGV2ZW50KHJlYWQsIGlkLCBvd24uZXBvY2gsIGlkLCAxKTtcbiAgICBjb25zdCByZXN1bHQgPSBzdW1tYXJ5KHJlY29yZCwgb3duLCBhdWRpZW5jZSk7XG4gICAgYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG4gIGNvbnN0IGludml0ZU1lbWJlciA9IChpbnB1dDogSW52aXRlTWVtYmVySW5wdXQpOiBQcm9taXNlPENvbnZlcnNhdGlvbkludml0ZT4gPT4gdHJhbnNhY3QoYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxDb252ZXJzYXRpb25JbnZpdGU+KHJlYWQsICdpbnZpdGUnLCBpbnB1dCk7XG4gICAgaWYocmVxdWVzdC5wcmlvcikge1xuICAgICAgcmV0dXJuIHJlcXVlc3QucHJpb3I7XG4gICAgfVxuICAgIGNvbnN0IG93biA9IGF3YWl0IGFjY2VzcyhyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCwgJ2ludml0ZScpO1xuICAgIGNoZWNrUmV2aXNpb24ob3duLCBpbnB1dC5leHBlY3RlZFJldmlzaW9uKTtcbiAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCBjb25uZWN0ZWQocmVhZCwgaWRlbnRpdHksIGlucHV0LnBlcnNvbmFJZCk7XG4gICAgYXdhaXQgZXhwaXJlSW52aXRlcyhyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCk7XG4gICAgY29uc3QgcHJpb3IgPSBhd2FpdCByZWFkPEludml0ZVJlY29yZD4oJ0ZPUiBpbnZpdGUgSU4gY2hhdEludml0ZXMgRklMVEVSIGludml0ZS5jdXJyZW50S2V5ID09IEBrZXkgTElNSVQgMSBSRVRVUk4gaW52aXRlJyxcbiAgICAgIHtrZXk6IGAke2lucHV0LmNvbnZlcnNhdGlvbklkfToke2lucHV0LnBlcnNvbmFJZH1gfSk7XG4gICAgaWYocHJpb3IpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGludml0ZUR0byhwcmlvcik7XG4gICAgICBhd2FpdCByZXF1ZXN0LnNhdmUocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IHJlYWQ8e3JlYWRvbmx5IGFjdGl2ZTogYm9vbGVhbjsgcmVhZG9ubHkgdG90YWw6IG51bWJlcn0+KGBSRVRVUk4ge1xuICAgICAgYWN0aXZlOiBMRU5HVEgoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcCBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZFxuICAgICAgICBBTkQgbWVtYmVyLnBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBtZW1iZXIuc3RhdGUgPT0gJ2FjdGl2ZScgUkVUVVJOIDEpID4gMCxcbiAgICAgIHRvdGFsOiBMRU5HVEgoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcCBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZFxuICAgICAgICBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnIFJFVFVSTiAxKSArIExFTkdUSChGT1IgaW52aXRlIElOIGNoYXRJbnZpdGVzXG4gICAgICAgIEZJTFRFUiBpbnZpdGUuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkIEFORCBpbnZpdGUuc3RhdGUgPT0gJ3BlbmRpbmcnIEFORCBpbnZpdGUuZXhwaXJlc0F0ID4gQG5vdyBSRVRVUk4gMSlcbiAgICB9YCwge2NvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCwgbm93OiBEYXRlLm5vdygpLCBwZXJzb25hSWQ6IGlucHV0LnBlcnNvbmFJZH0pO1xuICAgIGlmKCFjb3VudHMgfHwgY291bnRzLmFjdGl2ZSB8fCBjb3VudHMudG90YWwgPj0gMjUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2NvbmZsaWN0Jyk7XG4gICAgfVxuICAgIGF3YWl0IHJhdGVMaW1pdChyZWFkKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhZGRJbnZpdGUocmVhZCwgaW5wdXQuY29udmVyc2F0aW9uSWQsIHRhcmdldCk7XG4gICAgYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG4gIGNvbnN0IHJlc29sdmVJbnZpdGUgPSAoXG4gICAgaW5wdXQ6IEFjY2VwdEludml0ZUlucHV0LCBhY2NlcHQ6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxDb252ZXJzYXRpb25TdW1tYXJ5IHwgQ29udmVyc2F0aW9uSW52aXRlPiA9PlxuICAgIHRyYW5zYWN0KGFzeW5jIChyZWFkKSA9PiB7XG4gICAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZWNlaXB0PENvbnZlcnNhdGlvblN1bW1hcnkgfCBDb252ZXJzYXRpb25JbnZpdGU+KHJlYWQsIGFjY2VwdCA/ICdhY2NlcHQnIDogJ2RlY2xpbmUnLCBpbnB1dCk7XG4gICAgICBpZihyZXF1ZXN0LnByaW9yKSB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0LnByaW9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaW52aXRlID0gYXdhaXQgcmVhZDxJbnZpdGVSZWNvcmQ+KCdSRVRVUk4gRE9DVU1FTlQoXCJjaGF0SW52aXRlc1wiLCBAaWQpJywge2lkOiBpbnB1dC5pbnZpdGVJZH0pO1xuICAgICAgaWYoIWludml0ZSB8fCBpbnZpdGUuaW52aXRlZVBlcnNvbmFJZCAhPT0gaWRlbnRpdHkucGVyc29uYUlkIHx8IGludml0ZS5pbnZpdGVlVXNlcklkICE9PSBpZGVudGl0eS51c2VySWRcbiAgICAgICAgfHwgaW52aXRlLnN0YXRlICE9PSAncGVuZGluZycgfHwgaW52aXRlLmV4cGlyZXNBdCA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgICAgfVxuICAgICAgaWYoaW52aXRlLnJldmlzaW9uICE9PSBpbnB1dC5leHBlY3RlZFJldmlzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2NvbmZsaWN0Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgY29udmVyc2F0aW9uKHJlYWQsIGludml0ZS5jb252ZXJzYXRpb25JZCk7XG4gICAgICBpZihjdXJyZW50LmtpbmQgIT09ICdncm91cCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignZm9yYmlkZGVuJyk7XG4gICAgICB9XG4gICAgICBsZXQgcmVzdWx0OiBDb252ZXJzYXRpb25TdW1tYXJ5IHwgQ29udmVyc2F0aW9uSW52aXRlO1xuICAgICAgaWYoYWNjZXB0KSB7XG4gICAgICAgIGNvbnN0IGludml0ZXIgPSBhd2FpdCBtZW1iZXIocmVhZCwgY3VycmVudC5fa2V5LCBpbnZpdGUuaW52aXRlZEJ5UGVyc29uYUlkKTtcbiAgICAgICAgaWYoIVsnb3duZXInLCAnYWRtaW4nXS5pbmNsdWRlcyhpbnZpdGVyLnJvbGUpIHx8IGN1cnJlbnQuYWN0aXZlTWVtYmVyQ291bnQgPj0gMjUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBhZHVsdChyZWFkLCB7cGVyc29uYUlkOiBpbnZpdGVyLnBlcnNvbmFJZCwgdXNlcklkOiBpbnZpdGVyLnVzZXJJZH0pO1xuICAgICAgICBhd2FpdCBjb25uZWN0ZWQocmVhZCwge3BlcnNvbmFJZDogaW52aXRlci5wZXJzb25hSWQsIHVzZXJJZDogaW52aXRlci51c2VySWR9LCBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgICBjb25zdCBvd24gPSBhd2FpdCBhZGRNZW1iZXIocmVhZCwgY3VycmVudC5fa2V5LCBpZGVudGl0eSwgJ21lbWJlcicsIGN1cnJlbnQubGFzdFNlcXVlbmNlICsgMSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCByZWFkPENvbnZlcnNhdGlvblJlY29yZD4oYFVQREFURSBAaWQgV0lUSCB7XG4gICAgICAgICAgYWN0aXZlTWVtYmVyQ291bnQ6IEBjb3VudCwgbWVtYmVyc2hpcFJldmlzaW9uOiBAcmV2aXNpb24sIHN0YXRlOiBAc3RhdGV9XG4gICAgICAgICAgSU4gY29udmVyc2F0aW9ucyBSRVRVUk4gTkVXYCwge2NvdW50OiBjdXJyZW50LmFjdGl2ZU1lbWJlckNvdW50ICsgMSwgaWQ6IGN1cnJlbnQuX2tleSxcbiAgICAgICAgICByZXZpc2lvbjogY3VycmVudC5tZW1iZXJzaGlwUmV2aXNpb24gKyAxLFxuICAgICAgICAgIHN0YXRlOiBjdXJyZW50LmFjdGl2ZU1lbWJlckNvdW50ICsgMSA+PSAzID8gJ2FjdGl2ZScgOiBjdXJyZW50LnN0YXRlfSk7XG4gICAgICAgIGlmKCF1cGRhdGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcigndW5hdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBldmVudChyZWFkLCBjdXJyZW50Ll9rZXksIG93bi5lcG9jaCwgb3duLl9rZXksIHVwZGF0ZWQubWVtYmVyc2hpcFJldmlzaW9uKTtcbiAgICAgICAgcmVzdWx0ID0gc3VtbWFyeSh1cGRhdGVkLCBvd24sIGF1ZGllbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHsuLi5pbnZpdGVEdG8oaW52aXRlKSwgcmV2aXNpb246IGludml0ZS5yZXZpc2lvbiArIDEsIHN0YXRlOiAnZGVjbGluZWQnfTtcbiAgICAgICAgYXdhaXQgZXZlbnQocmVhZCwgY3VycmVudC5fa2V5LCAnJywgaW52aXRlLl9rZXksIGludml0ZS5yZXZpc2lvbiArIDEpO1xuICAgICAgfVxuICAgICAgYXdhaXQgcmVhZChgVVBEQVRFIEBpZCBXSVRIIHtjdXJyZW50S2V5OiBudWxsLCByZXNvbHZlZEF0OiBAbm93LCByZXZpc2lvbjogQHJldmlzaW9uLCBzdGF0ZTogQHN0YXRlfVxuICAgICAgICBJTiBjaGF0SW52aXRlcyBSRVRVUk4gdHJ1ZWAsIHtpZDogaW52aXRlLl9rZXksIG5vdzogRGF0ZS5ub3coKSwgcmV2aXNpb246IGludml0ZS5yZXZpc2lvbiArIDEsXG4gICAgICAgIHN0YXRlOiBhY2NlcHQgPyAnYWNjZXB0ZWQnIDogJ2RlY2xpbmVkJ30pO1xuICAgICAgYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICBjb25zdCBjaGFuZ2VNZW1iZXJzaGlwID0gKFxuICAgIGFjdGlvbjogJ2xlYXZlJyB8ICdyZW1vdmUnIHwgJ3JvbGUnIHwgJ3RyYW5zZmVyJyxcbiAgICBpbnB1dDogQ2hhbmdlTWVtYmVyUm9sZUlucHV0IHwgTGVhdmVDb252ZXJzYXRpb25JbnB1dCB8IFJlbW92ZU1lbWJlcklucHV0XG4gICk6IFByb21pc2U8Q29udmVyc2F0aW9uU3VtbWFyeT4gPT4gdHJhbnNhY3QoYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxDb252ZXJzYXRpb25TdW1tYXJ5PihyZWFkLCBhY3Rpb24sIGlucHV0KTtcbiAgICBpZihyZXF1ZXN0LnByaW9yKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdC5wcmlvcjtcbiAgICB9XG4gICAgY29uc3Qgb3duQWNjZXNzID0gYXdhaXQgYWNjZXNzKHJlYWQsIGlucHV0LmNvbnZlcnNhdGlvbklkKTtcbiAgICBjaGVja1JldmlzaW9uKG93bkFjY2VzcywgaW5wdXQuZXhwZWN0ZWRSZXZpc2lvbik7XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNvbnZlcnNhdGlvbihyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCk7XG4gICAgY29uc3Qgb3duID0gYXdhaXQgbWVtYmVyKHJlYWQsIGN1cnJlbnQuX2tleSwgaWRlbnRpdHkucGVyc29uYUlkKTtcbiAgICBjb25zdCB0YXJnZXRQZXJzb25hSWQgPSAncGVyc29uYUlkJyBpbiBpbnB1dCA/IGlucHV0LnBlcnNvbmFJZCA6IGlkZW50aXR5LnBlcnNvbmFJZDtcbiAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRQZXJzb25hSWQgPT09IGlkZW50aXR5LnBlcnNvbmFJZCA/IG93biA6IGF3YWl0IG1lbWJlcihyZWFkLCBjdXJyZW50Ll9rZXksIHRhcmdldFBlcnNvbmFJZCk7XG4gICAgY29uc3QgbGVhdmluZyA9IGFjdGlvbiA9PT0gJ2xlYXZlJyB8fCBhY3Rpb24gPT09ICdyZW1vdmUnO1xuICAgIGlmKChhY3Rpb24gPT09ICdyb2xlJyB8fCBhY3Rpb24gPT09ICd0cmFuc2ZlcicpICYmIChvd24ucm9sZSAhPT0gJ293bmVyJyB8fCB0YXJnZXQuX2tleSA9PT0gb3duLl9rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICB9XG4gICAgaWYoYWN0aW9uID09PSAncmVtb3ZlJyAmJiAodGFyZ2V0Ll9rZXkgPT09IG93bi5fa2V5IHx8IHRhcmdldC5yb2xlID09PSAnb3duZXInXG4gICAgICB8fCAhWydvd25lcicsICdhZG1pbiddLmluY2x1ZGVzKG93bi5yb2xlKSB8fCAob3duLnJvbGUgPT09ICdhZG1pbicgJiYgdGFyZ2V0LnJvbGUgIT09ICdtZW1iZXInKSkpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICBpZihhY3Rpb24gPT09ICdsZWF2ZScgJiYgb3duLnJvbGUgPT09ICdvd25lcicgJiYgY3VycmVudC5hY3RpdmVNZW1iZXJDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2NvbmZsaWN0Jyk7XG4gICAgfVxuICAgIGlmKGFjdGlvbiA9PT0gJ3JvbGUnICYmIHRhcmdldC5yb2xlID09PSAnb3duZXInKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICB9XG4gICAgaWYoYWN0aW9uID09PSAndHJhbnNmZXInIHx8IChhY3Rpb24gPT09ICdyb2xlJyAmJiAncm9sZScgaW4gaW5wdXQgJiYgaW5wdXQucm9sZSA9PT0gJ2FkbWluJykpIHtcbiAgICAgIGF3YWl0IGFkdWx0KHJlYWQsIHtwZXJzb25hSWQ6IHRhcmdldC5wZXJzb25hSWQsIHVzZXJJZDogdGFyZ2V0LnVzZXJJZH0pO1xuICAgIH1cbiAgICBsZXQgb3duUmVzdWx0ID0gb3duO1xuICAgIGlmKGFjdGlvbiA9PT0gJ3RyYW5zZmVyJykge1xuICAgICAgYXdhaXQgcmVhZCgnVVBEQVRFIEBpZCBXSVRIIHtyb2xlOiBcImFkbWluXCIsIHJldmlzaW9uOiBAcmV2aXNpb259IElOIGhhc0NoYXRNZW1iZXJzaGlwIFJFVFVSTiB0cnVlJyxcbiAgICAgICAge2lkOiBvd24uX2tleSwgcmV2aXNpb246IG93bi5yZXZpc2lvbiArIDF9KTtcbiAgICAgIGF3YWl0IHJlYWQoJ1VQREFURSBAaWQgV0lUSCB7cm9sZTogXCJvd25lclwiLCByZXZpc2lvbjogQHJldmlzaW9ufSBJTiBoYXNDaGF0TWVtYmVyc2hpcCBSRVRVUk4gdHJ1ZScsXG4gICAgICAgIHtpZDogdGFyZ2V0Ll9rZXksIHJldmlzaW9uOiB0YXJnZXQucmV2aXNpb24gKyAxfSk7XG4gICAgICBvd25SZXN1bHQgPSB7Li4ub3duLCByZXZpc2lvbjogb3duLnJldmlzaW9uICsgMSwgcm9sZTogJ2FkbWluJ307XG4gICAgfSBlbHNlIGlmKGFjdGlvbiA9PT0gJ3JvbGUnICYmICdyb2xlJyBpbiBpbnB1dCkge1xuICAgICAgYXdhaXQgcmVhZCgnVVBEQVRFIEBpZCBXSVRIIHtyb2xlOiBAcm9sZSwgcmV2aXNpb246IEByZXZpc2lvbn0gSU4gaGFzQ2hhdE1lbWJlcnNoaXAgUkVUVVJOIHRydWUnLFxuICAgICAgICB7aWQ6IHRhcmdldC5fa2V5LCByZXZpc2lvbjogdGFyZ2V0LnJldmlzaW9uICsgMSwgcm9sZTogaW5wdXQucm9sZX0pO1xuICAgIH0gZWxzZSBpZihsZWF2aW5nKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGFjdGlvbiA9PT0gJ2xlYXZlJyA/ICdsZWZ0JyA6ICdyZW1vdmVkJztcbiAgICAgIGF3YWl0IHJlYWQoYFVQREFURSBAaWQgV0lUSCB7Y3VycmVudEtleTogbnVsbCwgZW5kZWRBdDogQG5vdywgZW5kZWRCeVBlcnNvbmFJZDogQGFjdG9yLFxuICAgICAgICBsZWZ0U2VxdWVuY2U6IEBzZXF1ZW5jZSwgcmV2aXNpb246IEByZXZpc2lvbiwgc3RhdGU6IEBzdGF0ZX0gSU4gaGFzQ2hhdE1lbWJlcnNoaXAgUkVUVVJOIHRydWVgLCB7XG4gICAgICAgIGFjdG9yOiBpZGVudGl0eS5wZXJzb25hSWQsIGlkOiB0YXJnZXQuX2tleSwgbm93OiBEYXRlLm5vdygpLCByZXZpc2lvbjogdGFyZ2V0LnJldmlzaW9uICsgMSxcbiAgICAgICAgc2VxdWVuY2U6IGN1cnJlbnQubGFzdFNlcXVlbmNlLCBzdGF0ZVxuICAgICAgfSk7XG4gICAgICBpZihhY3Rpb24gPT09ICdsZWF2ZScpIHtcbiAgICAgICAgb3duUmVzdWx0ID0gey4uLm93biwgbGVmdFNlcXVlbmNlOiBjdXJyZW50Lmxhc3RTZXF1ZW5jZSwgcmV2aXNpb246IG93bi5yZXZpc2lvbiArIDEsIHN0YXRlfTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlYWQoYEZPUiBlZGdlIElOIGhhc0NvbnZlcnNhdGlvbiBGSUxURVIgZWRnZS5fZnJvbSA9PSBAZnJvbSBBTkQgZWRnZS5fdG8gPT0gQHRvXG4gICAgICAgIExFVCByZW1haW5pbmcgPSBGSVJTVChGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwIEZJTFRFUiBtZW1iZXIuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkXG4gICAgICAgICAgQU5EIG1lbWJlci51c2VySWQgPT0gQHVzZXJJZCBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgICAgIEZJTFRFUiByZW1haW5pbmcgIT0gdHJ1ZSBSRU1PVkUgZWRnZSBJTiBoYXNDb252ZXJzYXRpb24gUkVUVVJOIHRydWVgLCB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiBjdXJyZW50Ll9rZXksIGZyb206IGB1c2Vycy8ke3RhcmdldC51c2VySWR9YCwgdG86IGBjb252ZXJzYXRpb25zLyR7Y3VycmVudC5fa2V5fWAsIHVzZXJJZDogdGFyZ2V0LnVzZXJJZFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmKGxlYXZpbmcgfHwgKGFjdGlvbiA9PT0gJ3JvbGUnICYmICdyb2xlJyBpbiBpbnB1dCAmJiBpbnB1dC5yb2xlID09PSAnbWVtYmVyJykpIHtcbiAgICAgIGF3YWl0IHJlYWQoYEZPUiBpbnZpdGUgSU4gY2hhdEludml0ZXMgRklMVEVSIGludml0ZS5jb252ZXJzYXRpb25JZCA9PSBAY29udmVyc2F0aW9uSWRcbiAgICAgICAgQU5EIGludml0ZS5zdGF0ZSA9PSAncGVuZGluZycgQU5EIChpbnZpdGUuaW52aXRlZEJ5UGVyc29uYUlkID09IEBwZXJzb25hSWQgT1IgQGNsb3NlKVxuICAgICAgICBVUERBVEUgaW52aXRlIFdJVEgge2N1cnJlbnRLZXk6IG51bGwsIHJlc29sdmVkQXQ6IEBub3csIHJldmlzaW9uOiBpbnZpdGUucmV2aXNpb24gKyAxLCBzdGF0ZTogJ3Jldm9rZWQnfVxuICAgICAgICBJTiBjaGF0SW52aXRlcyBSRVRVUk4gdHJ1ZWAsIHtjbG9zZTogbGVhdmluZyAmJiBjdXJyZW50LmFjdGl2ZU1lbWJlckNvdW50ID09PSAxLFxuICAgICAgICBjb252ZXJzYXRpb25JZDogY3VycmVudC5fa2V5LCBub3c6IERhdGUubm93KCksIHBlcnNvbmFJZDogdGFyZ2V0LnBlcnNvbmFJZH0pO1xuICAgIH1cbiAgICBjb25zdCBjb3VudCA9IGN1cnJlbnQuYWN0aXZlTWVtYmVyQ291bnQgLSAobGVhdmluZyA/IDEgOiAwKTtcbiAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgcmVhZDxDb252ZXJzYXRpb25SZWNvcmQ+KGBVUERBVEUgQGlkIFdJVEgge1xuICAgICAgYWN0aXZlTWVtYmVyQ291bnQ6IEBjb3VudCwgbWVtYmVyc2hpcFJldmlzaW9uOiBAcmV2aXNpb24sIHN0YXRlOiBAc3RhdGV9XG4gICAgICBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgLCB7Y291bnQsIGlkOiBjdXJyZW50Ll9rZXksIHJldmlzaW9uOiBjdXJyZW50Lm1lbWJlcnNoaXBSZXZpc2lvbiArIDEsXG4gICAgICBzdGF0ZTogY291bnQgPT09IDAgPyAnY2xvc2VkJyA6IGN1cnJlbnQuc3RhdGV9KTtcbiAgICBpZighdXBkYXRlZCkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcigndW5hdmFpbGFibGUnKTtcbiAgICB9XG4gICAgYXdhaXQgZXZlbnQocmVhZCwgY3VycmVudC5fa2V5LCB0YXJnZXQuZXBvY2gsIHRhcmdldC5fa2V5LCB1cGRhdGVkLm1lbWJlcnNoaXBSZXZpc2lvbik7XG4gICAgY29uc3QgcmVzdWx0ID0gc3VtbWFyeSh1cGRhdGVkLCBvd25SZXN1bHQsIGF1ZGllbmNlKTtcbiAgICBhd2FpdCByZXF1ZXN0LnNhdmUocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbiAgY29uc3QgbGlzdENvbnZlcnNhdGlvbnMgPSAoaW5wdXQ6IENoYXRMaXN0SW5wdXQpOiBQcm9taXNlPHJlYWRvbmx5IENvbnZlcnNhdGlvblN1bW1hcnlbXT4gPT5cbiAgICB0cmFuc2FjdChhc3luYyAocmVhZCkgPT4ge1xuICAgICAgYXdhaXQgYWN0b3IocmVhZCk7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCByZWFkPHN0cmluZ1tdPihgUkVUVVJOIChGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwXG4gICAgICBGSUxURVIgbWVtYmVyLnBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBtZW1iZXIudXNlcklkID09IEB1c2VySWQgQU5EIG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJ1xuICAgICAgICBBTkQgbWVtYmVyLmNvbnZlcnNhdGlvbklkID4gQGFmdGVyIFNPUlQgbWVtYmVyLmNvbnZlcnNhdGlvbklkIExJTUlUIEBsaW1pdCBSRVRVUk4gbWVtYmVyLmNvbnZlcnNhdGlvbklkKWAsIHtcbiAgICAgICAgLi4uaWRlbnRpdHksIGFmdGVyOiBpbnB1dC5hZnRlciB8fCAnJywgbGltaXQ6IGlucHV0LmxpbWl0IHx8IDI1XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IENvbnZlcnNhdGlvblN1bW1hcnlbXSA9IFtdO1xuICAgICAgZm9yKGNvbnN0IGlkIG9mIGlkcyB8fCBbXSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGFjY2VzcyhyZWFkLCBpZCk7XG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNvbnZlcnNhdGlvbihyZWFkLCBpZCk7XG4gICAgICAgICAgaWYoY3VycmVudC5raW5kID09PSAnZGlyZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgcGVlciA9IGF3YWl0IHJlYWQ8TWVtYmVyUmVjb3JkPihgRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcCBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBpZFxuICAgICAgICAgICAgQU5EIG1lbWJlci5wZXJzb25hSWQgIT0gQHBlcnNvbmFJZCBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnIExJTUlUIDEgUkVUVVJOIG1lbWJlcmAsIHtpZCwgcGVyc29uYUlkOiBpZGVudGl0eS5wZXJzb25hSWR9KTtcbiAgICAgICAgICAgIGlmKCFwZWVyKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGVkKHJlYWQsIGlkZW50aXR5LCBwZWVyLnBlcnNvbmFJZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdHMucHVzaChzdW1tYXJ5KGN1cnJlbnQsIGF3YWl0IG1lbWJlcihyZWFkLCBpZCwgaWRlbnRpdHkucGVyc29uYUlkKSwgYXVkaWVuY2UsIHRydWUpKTtcbiAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgIGlmKCEoZXJyb3IgaW5zdGFuY2VvZiBDaGF0RXJyb3IpIHx8IGVycm9yLmNvZGUgIT09ICdmb3JiaWRkZW4nKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0pO1xuICBjb25zdCBsaXN0SW52aXRlcyA9IChpbnB1dDogQ2hhdExpc3RJbnB1dCk6IFByb21pc2U8cmVhZG9ubHkgQ29udmVyc2F0aW9uSW52aXRlW10+ID0+IHRyYW5zYWN0KGFzeW5jIChyZWFkKSA9PiB7XG4gICAgYXdhaXQgYWN0b3IocmVhZCk7XG4gICAgY29uc3QgcmVjb3JkcyA9IGF3YWl0IHJlYWQ8SW52aXRlUmVjb3JkW10+KGBSRVRVUk4gKEZPUiBpbnZpdGUgSU4gY2hhdEludml0ZXNcbiAgICAgIEZJTFRFUiBpbnZpdGUuaW52aXRlZVBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBpbnZpdGUuaW52aXRlZVVzZXJJZCA9PSBAdXNlcklkIEFORCBpbnZpdGUuc3RhdGUgPT0gJ3BlbmRpbmcnXG4gICAgICAgIEFORCBpbnZpdGUuZXhwaXJlc0F0ID4gQG5vdyBBTkQgaW52aXRlLl9rZXkgPiBAYWZ0ZXJcbiAgICAgIExFVCBjb252ZXJzYXRpb24gPSBET0NVTUVOVCgnY29udmVyc2F0aW9ucycsIGludml0ZS5jb252ZXJzYXRpb25JZClcbiAgICAgIExFVCBpbnZpdGVyID0gRE9DVU1FTlQoJ3BlcnNvbmFzJywgaW52aXRlLmludml0ZWRCeVBlcnNvbmFJZClcbiAgICAgIExFVCBpbnZpdGVyVXNlciA9IERPQ1VNRU5UKCd1c2VycycsIGludml0ZXIudXNlcklkKVxuICAgICAgTEVUIGludml0ZXJNZW1iZXJzaGlwID0gRklSU1QoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcFxuICAgICAgICBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IGludml0ZS5jb252ZXJzYXRpb25JZCBBTkQgbWVtYmVyLnBlcnNvbmFJZCA9PSBpbnZpdGUuaW52aXRlZEJ5UGVyc29uYUlkXG4gICAgICAgICAgQU5EIG1lbWJlci51c2VySWQgPT0gaW52aXRlci51c2VySWQgQU5EIG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJyBBTkQgbWVtYmVyLnJvbGUgSU4gWydvd25lcicsICdhZG1pbiddXG4gICAgICAgIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgICBMRVQgYmxvY2tlZCA9IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UudHlwZSA9PSAnYmxvY2snXG4gICAgICAgIEFORCAoKGVkZ2UuX2Zyb20gSU4gW0NPTkNBVCgncGVyc29uYXMvJywgQHBlcnNvbmFJZCksIENPTkNBVCgndXNlcnMvJywgQHVzZXJJZCldXG4gICAgICAgICAgQU5EIGVkZ2UuX3RvIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIGludml0ZS5pbnZpdGVkQnlQZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIGludml0ZXIudXNlcklkKV0pXG4gICAgICAgICAgT1IgKGVkZ2UuX3RvIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIEBwZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIEB1c2VySWQpXVxuICAgICAgICAgIEFORCBlZGdlLl9mcm9tIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIGludml0ZS5pbnZpdGVkQnlQZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIGludml0ZXIudXNlcklkKV0pKVxuICAgICAgICBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgRklMVEVSIGNvbnZlcnNhdGlvbi5jaGF0U2NoZW1hVmVyc2lvbiA9PSAxIEFORCBjb252ZXJzYXRpb24uc3RhdGUgSU4gWydhY3RpdmUnLCAnZm9ybWluZyddXG4gICAgICAgIEFORCBpbnZpdGVyICE9IG51bGwgQU5EIGludml0ZXJVc2VyICE9IG51bGwgQU5EIGludml0ZXIuYWN0aXZlICE9IGZhbHNlIEFORCBpbnZpdGVyVXNlci5hY3RpdmUgIT0gZmFsc2VcbiAgICAgICAgQU5EIGludml0ZXJNZW1iZXJzaGlwID09IHRydWUgQU5EIGJsb2NrZWQgIT0gdHJ1ZVxuICAgICAgU09SVCBpbnZpdGUuX2tleSBMSU1JVCBAbGltaXQgUkVUVVJOIGludml0ZSlgLCB7Li4uaWRlbnRpdHksIGFmdGVyOiBpbnB1dC5hZnRlciB8fCAnJywgbGltaXQ6IGlucHV0LmxpbWl0IHx8IDI1LCBub3c6IERhdGUubm93KCl9KTtcbiAgICByZXR1cm4gKHJlY29yZHMgfHwgW10pLm1hcChpbnZpdGVEdG8pO1xuICB9KTtcbiAgY29uc3QgZ2V0UGFydGljaXBhbnRzID0gKGlucHV0OiB7cmVhZG9ubHkgY29udmVyc2F0aW9uSWQ6IHN0cmluZ30pOiBQcm9taXNlPHJlYWRvbmx5IENvbnZlcnNhdGlvbk1lbWJlcnNoaXBbXT4gPT5cbiAgICB0cmFuc2FjdChhc3luYyAocmVhZCkgPT4ge1xuICAgICAgYXdhaXQgYWN0b3IocmVhZCk7XG4gICAgICBhd2FpdCBhY2Nlc3MocmVhZCwgaW5wdXQuY29udmVyc2F0aW9uSWQpO1xuICAgICAgY29uc3QgcmVjb3JkcyA9IGF3YWl0IHJlYWQ8TWVtYmVyUmVjb3JkW10+KGBSRVRVUk4gKEZPUiBtZW1iZXIgSU4gaGFzQ2hhdE1lbWJlcnNoaXBcbiAgICAgICAgRklMVEVSIG1lbWJlci5jb252ZXJzYXRpb25JZCA9PSBAY29udmVyc2F0aW9uSWQgQU5EIG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJ1xuICAgICAgICBMRVQgcGVyc29uYSA9IERPQ1VNRU5UKCdwZXJzb25hcycsIG1lbWJlci5wZXJzb25hSWQpIExFVCB1c2VyID0gRE9DVU1FTlQoJ3VzZXJzJywgbWVtYmVyLnVzZXJJZClcbiAgICAgICAgTEVUIGJsb2NrZWQgPSBGSVJTVChGT1IgZWRnZSBJTiBoYXNDb25uZWN0aW9uIEZJTFRFUiBlZGdlLnR5cGUgPT0gJ2Jsb2NrJ1xuICAgICAgICAgIEFORCAoKGVkZ2UuX2Zyb20gSU4gW0B2aWV3ZXJQZXJzb25hLCBAdmlld2VyVXNlcl1cbiAgICAgICAgICAgIEFORCBlZGdlLl90byBJTiBbQ09OQ0FUKCdwZXJzb25hcy8nLCBtZW1iZXIucGVyc29uYUlkKSwgQ09OQ0FUKCd1c2Vycy8nLCBtZW1iZXIudXNlcklkKV0pXG4gICAgICAgICAgT1IgKGVkZ2UuX3RvIElOIFtAdmlld2VyUGVyc29uYSwgQHZpZXdlclVzZXJdXG4gICAgICAgICAgICBBTkQgZWRnZS5fZnJvbSBJTiBbQ09OQ0FUKCdwZXJzb25hcy8nLCBtZW1iZXIucGVyc29uYUlkKSwgQ09OQ0FUKCd1c2Vycy8nLCBtZW1iZXIudXNlcklkKV0pKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgICBGSUxURVIgcGVyc29uYSAhPSBudWxsIEFORCB1c2VyICE9IG51bGwgQU5EIHBlcnNvbmEuYWN0aXZlICE9IGZhbHNlIEFORCB1c2VyLmFjdGl2ZSAhPSBmYWxzZVxuICAgICAgICAgIEFORCBwZXJzb25hLnVzZXJJZCA9PSBtZW1iZXIudXNlcklkIEFORCBibG9ja2VkICE9IHRydWVcbiAgICAgICAgU09SVCBtZW1iZXIucGVyc29uYUlkIExJTUlUIDI1IFJFVFVSTiBtZW1iZXIpYCwge1xuICAgICAgICBjb252ZXJzYXRpb25JZDogaW5wdXQuY29udmVyc2F0aW9uSWQsIHZpZXdlclBlcnNvbmE6IGBwZXJzb25hcy8ke2lkZW50aXR5LnBlcnNvbmFJZH1gLCB2aWV3ZXJVc2VyOiBgdXNlcnMvJHtpZGVudGl0eS51c2VySWR9YFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKHJlY29yZHMgfHwgW10pLm1hcChtZW1iZXJzaGlwRHRvKTtcbiAgICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhY2NlcHRJbnZpdGU6IChpbnB1dDogQWNjZXB0SW52aXRlSW5wdXQpID0+IHJlc29sdmVJbnZpdGUoaW5wdXQsIHRydWUpIGFzIFByb21pc2U8Q29udmVyc2F0aW9uU3VtbWFyeT4sXG4gICAgY2hhbmdlTWVtYmVyUm9sZTogKGlucHV0OiBDaGFuZ2VNZW1iZXJSb2xlSW5wdXQpID0+IGNoYW5nZU1lbWJlcnNoaXAoJ3JvbGUnLCBpbnB1dCksXG4gICAgY3JlYXRlR3JvdXAsXG4gICAgZGVjbGluZUludml0ZTogKGlucHV0OiBBY2NlcHRJbnZpdGVJbnB1dCkgPT4gcmVzb2x2ZUludml0ZShpbnB1dCwgZmFsc2UpIGFzIFByb21pc2U8Q29udmVyc2F0aW9uSW52aXRlPixcbiAgICBnZXRPckNyZWF0ZURpcmVjdCwgZ2V0UGFydGljaXBhbnRzLCBpbnZpdGVNZW1iZXIsXG4gICAgbGVhdmVDb252ZXJzYXRpb246IChpbnB1dDogTGVhdmVDb252ZXJzYXRpb25JbnB1dCkgPT4gY2hhbmdlTWVtYmVyc2hpcCgnbGVhdmUnLCBpbnB1dCksXG4gICAgbGlzdENvbnZlcnNhdGlvbnMsIGxpc3RJbnZpdGVzLFxuICAgIHJlbW92ZU1lbWJlcjogKGlucHV0OiBSZW1vdmVNZW1iZXJJbnB1dCkgPT4gY2hhbmdlTWVtYmVyc2hpcCgncmVtb3ZlJywgaW5wdXQpLFxuICAgIHRyYW5zZmVyT3duZXJzaGlwOiAoaW5wdXQ6IFRyYW5zZmVyT3duZXJzaGlwSW5wdXQpID0+IGNoYW5nZU1lbWJlcnNoaXAoJ3RyYW5zZmVyJywgaW5wdXQpXG4gIH07XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFJlcG9zaXRvcnkgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEdXJhYmxlQ29udmVyc2F0aW9uUmVwb3NpdG9yeT47XG5cbmNvbnN0IHZhbGlkID0gKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWQgPT4ge1xuICBpZighY29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IENoYXRFcnJvcignaW52YWxpZF9yZXF1ZXN0Jyk7XG4gIH1cbn07XG5jb25zdCBtdXRhdGlvbiA9IChpbnB1dDoge3JlYWRvbmx5IGV4cGVjdGVkUmV2aXNpb246IG51bWJlcjsgcmVhZG9ubHkgaWRlbXBvdGVuY3lLZXk6IHN0cmluZ30pOiB2b2lkID0+IHtcbiAgdmFsaWQoQm9vbGVhbihpbnB1dCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5pZGVtcG90ZW5jeUtleSlcbiAgICAmJiBOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5leHBlY3RlZFJldmlzaW9uKSAmJiBpbnB1dC5leHBlY3RlZFJldmlzaW9uID4gMCk7XG59O1xuY29uc3QgY29udmVyc2F0aW9uTXV0YXRpb24gPSAoaW5wdXQ6IExlYXZlQ29udmVyc2F0aW9uSW5wdXQpOiB2b2lkID0+IHtcbiAgbXV0YXRpb24oaW5wdXQpO1xuICB2YWxpZChpc0NoYXRJZGVudGlmaWVyKGlucHV0LmNvbnZlcnNhdGlvbklkKSk7XG59O1xuY29uc3QgdGFyZ2V0ZWRNdXRhdGlvbiA9IChpbnB1dDogUmVtb3ZlTWVtYmVySW5wdXQpOiB2b2lkID0+IHtcbiAgY29udmVyc2F0aW9uTXV0YXRpb24oaW5wdXQpO1xuICB2YWxpZChpc0NoYXRJZGVudGlmaWVyKGlucHV0LnBlcnNvbmFJZCkpO1xufTtcbmNvbnN0IGxpc3QgPSAoaW5wdXQ6IENoYXRMaXN0SW5wdXQpOiB2b2lkID0+IHZhbGlkKEJvb2xlYW4oaW5wdXQpXG4gICYmIChpbnB1dC5saW1pdCA9PT0gdW5kZWZpbmVkIHx8IChOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5saW1pdCkgJiYgaW5wdXQubGltaXQgPiAwICYmIGlucHV0LmxpbWl0IDw9IDUwKSlcbiAgJiYgKGlucHV0LmFmdGVyID09PSB1bmRlZmluZWQgfHwgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5hZnRlcikpKTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUR1cmFibGVDb252ZXJzYXRpb25BY3Rpb25zID0gKFxuICBpZGVudGl0eTogQ2hhdElkZW50aXR5LCByZXBvc2l0b3J5OiBDaGF0UmVwb3NpdG9yeVxuKSA9PiB7XG4gIGlmKCFpZGVudGl0eSB8fCAhaXNDaGF0SWRlbnRpZmllcihpZGVudGl0eS5wZXJzb25hSWQpIHx8ICFpc0NoYXRJZGVudGlmaWVyKGlkZW50aXR5LnVzZXJJZCkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGFjY2VwdEludml0ZTogYXN5bmMgKGlucHV0OiBBY2NlcHRJbnZpdGVJbnB1dCkgPT4ge1xuICAgICAgbXV0YXRpb24oaW5wdXQpO1xuICAgICAgdmFsaWQoaXNDaGF0SWRlbnRpZmllcihpbnB1dC5pbnZpdGVJZCkpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuYWNjZXB0SW52aXRlKGlucHV0KTtcbiAgICB9LFxuICAgIGNoYW5nZU1lbWJlclJvbGU6IGFzeW5jIChpbnB1dDogQ2hhbmdlTWVtYmVyUm9sZUlucHV0KSA9PiB7XG4gICAgICB0YXJnZXRlZE11dGF0aW9uKGlucHV0KTtcbiAgICAgIHZhbGlkKFsnYWRtaW4nLCAnbWVtYmVyJ10uaW5jbHVkZXMoaW5wdXQucm9sZSkpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuY2hhbmdlTWVtYmVyUm9sZShpbnB1dCk7XG4gICAgfSxcbiAgICBjcmVhdGVHcm91cDogYXN5bmMgKGlucHV0OiBDcmVhdGVHcm91cElucHV0KSA9PiB7XG4gICAgICB2YWxpZChCb29sZWFuKGlucHV0KSAmJiBpc0NoYXRJZGVudGlmaWVyKGlucHV0LmlkZW1wb3RlbmN5S2V5KSAmJiB0eXBlb2YgaW5wdXQubmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgJiYgaW5wdXQubmFtZS50cmltKCkubGVuZ3RoID4gMCAmJiBpbnB1dC5uYW1lLmxlbmd0aCA8PSAyMDBcbiAgICAgICAgJiYgQXJyYXkuaXNBcnJheShpbnB1dC5tZW1iZXJQZXJzb25hSWRzKVxuICAgICAgICAmJiBpbnB1dC5tZW1iZXJQZXJzb25hSWRzLmxlbmd0aCA+PSAyICYmIGlucHV0Lm1lbWJlclBlcnNvbmFJZHMubGVuZ3RoIDw9IDI0XG4gICAgICAgICYmIGlucHV0Lm1lbWJlclBlcnNvbmFJZHMuZXZlcnkoKGlkKSA9PiBpc0NoYXRJZGVudGlmaWVyKGlkKSAmJiBpZCAhPT0gaWRlbnRpdHkucGVyc29uYUlkKVxuICAgICAgICAmJiBuZXcgU2V0KGlucHV0Lm1lbWJlclBlcnNvbmFJZHMpLnNpemUgPT09IGlucHV0Lm1lbWJlclBlcnNvbmFJZHMubGVuZ3RoKTtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5LmNyZWF0ZUdyb3VwKGlucHV0KTtcbiAgICB9LFxuICAgIGRlY2xpbmVJbnZpdGU6IGFzeW5jIChpbnB1dDogQWNjZXB0SW52aXRlSW5wdXQpID0+IHtcbiAgICAgIG11dGF0aW9uKGlucHV0KTtcbiAgICAgIHZhbGlkKGlzQ2hhdElkZW50aWZpZXIoaW5wdXQuaW52aXRlSWQpKTtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5LmRlY2xpbmVJbnZpdGUoaW5wdXQpO1xuICAgIH0sXG4gICAgZ2V0T3JDcmVhdGVEaXJlY3Q6IGFzeW5jIChpbnB1dDogQ3JlYXRlRGlyZWN0SW5wdXQpID0+IHtcbiAgICAgIHZhbGlkKEJvb2xlYW4oaW5wdXQpICYmIGlzQ2hhdElkZW50aWZpZXIoaW5wdXQucGFydGljaXBhbnRQZXJzb25hSWQpXG4gICAgICAgICYmIGlucHV0LnBhcnRpY2lwYW50UGVyc29uYUlkICE9PSBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0T3JDcmVhdGVEaXJlY3QoaW5wdXQpO1xuICAgIH0sXG4gICAgZ2V0UGFydGljaXBhbnRzOiBhc3luYyAoaW5wdXQ6IHtyZWFkb25seSBjb252ZXJzYXRpb25JZDogc3RyaW5nfSkgPT4ge1xuICAgICAgdmFsaWQoQm9vbGVhbihpbnB1dCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5jb252ZXJzYXRpb25JZCkpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0UGFydGljaXBhbnRzKGlucHV0KTtcbiAgICB9LFxuICAgIGludml0ZU1lbWJlcjogYXN5bmMgKGlucHV0OiBJbnZpdGVNZW1iZXJJbnB1dCkgPT4ge1xuICAgICAgdGFyZ2V0ZWRNdXRhdGlvbihpbnB1dCk7XG4gICAgICB2YWxpZChpbnB1dC5wZXJzb25hSWQgIT09IGlkZW50aXR5LnBlcnNvbmFJZCk7XG4gICAgICByZXR1cm4gcmVwb3NpdG9yeS5pbnZpdGVNZW1iZXIoaW5wdXQpO1xuICAgIH0sXG4gICAgbGVhdmVDb252ZXJzYXRpb246IGFzeW5jIChpbnB1dDogTGVhdmVDb252ZXJzYXRpb25JbnB1dCkgPT4ge1xuICAgICAgY29udmVyc2F0aW9uTXV0YXRpb24oaW5wdXQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkubGVhdmVDb252ZXJzYXRpb24oaW5wdXQpO1xuICAgIH0sXG4gICAgbGlzdENvbnZlcnNhdGlvbnM6IGFzeW5jIChpbnB1dDogQ2hhdExpc3RJbnB1dCA9IHt9KSA9PiB7XG4gICAgICBsaXN0KGlucHV0KTtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5Lmxpc3RDb252ZXJzYXRpb25zKGlucHV0KTtcbiAgICB9LFxuICAgIGxpc3RJbnZpdGVzOiBhc3luYyAoaW5wdXQ6IENoYXRMaXN0SW5wdXQgPSB7fSkgPT4ge1xuICAgICAgbGlzdChpbnB1dCk7XG4gICAgICByZXR1cm4gcmVwb3NpdG9yeS5saXN0SW52aXRlcyhpbnB1dCk7XG4gICAgfSxcbiAgICByZW1vdmVNZW1iZXI6IGFzeW5jIChpbnB1dDogUmVtb3ZlTWVtYmVySW5wdXQpID0+IHtcbiAgICAgIHRhcmdldGVkTXV0YXRpb24oaW5wdXQpO1xuICAgICAgdmFsaWQoaW5wdXQucGVyc29uYUlkICE9PSBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkucmVtb3ZlTWVtYmVyKGlucHV0KTtcbiAgICB9LFxuICAgIHRyYW5zZmVyT3duZXJzaGlwOiBhc3luYyAoaW5wdXQ6IFRyYW5zZmVyT3duZXJzaGlwSW5wdXQpID0+IHtcbiAgICAgIHRhcmdldGVkTXV0YXRpb24oaW5wdXQpO1xuICAgICAgdmFsaWQoaW5wdXQucGVyc29uYUlkICE9PSBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkudHJhbnNmZXJPd25lcnNoaXAoaW5wdXQpO1xuICAgIH1cbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInJhbmRvbVVVSUQiLCJDaGF0RXJyb3IiLCJhcHBlbmRDaGF0RXZlbnQiLCJjcmVhdGVNZW1iZXJzaGlwQXV0aG9yaXplciIsImlzQ2hhdElkZW50aWZpZXIiLCJjcmVhdGVEdXJhYmxlVHJhbnNhY3Rpb24iLCJoYXNoIiwiaW5wdXQiLCJ1cGRhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiZGlnZXN0IiwiaW52aXRlTWlsbGlzZWNvbmRzIiwibWVtYmVyc2hpcER0byIsInJlY29yZCIsImNvbnZlcnNhdGlvbklkIiwiZXBvY2giLCJqb2luU2VxdWVuY2UiLCJsZWZ0U2VxdWVuY2UiLCJwZXJzb25hSWQiLCJyZXZpc2lvbiIsInJvbGUiLCJzdGF0ZSIsImludml0ZUR0byIsImV4cGlyZXNBdCIsImludml0ZUlkIiwiX2tleSIsImludml0ZWRCeVBlcnNvbmFJZCIsImNyZWF0ZUR1cmFibGVDb252ZXJzYXRpb25SZXBvc2l0b3J5IiwiY29udGV4dCIsImlkZW50aXR5Iiwib3B0aW9ucyIsImF1ZGllbmNlIiwidHJhbnNhY3QiLCJleGNsdXNpdmUiLCJyZWFkIiwicmVhZENvbGxlY3Rpb25zIiwicXVlcnkiLCJzdW1tYXJ5IiwiY29udmVyc2F0aW9uIiwibWVtYmVyIiwiaW5jbHVkZU5hbWUiLCJhY3RpdmVNZW1iZXJDb3VudCIsImtpbmQiLCJtZW1iZXJzaGlwIiwibWVtYmVyc2hpcFJldmlzaW9uIiwibmFtZSIsInByb2plY3ROYW1lIiwidW5kZWZpbmVkIiwiYWN0b3IiLCJhbGxvd2VkIiwiYWR1bHQiLCJ3aG8iLCJhdXRob3JpemVJZGVudGl0eSIsImNvbm5lY3RlZCIsImZyb20iLCJ0YXJnZXQiLCJhY3RvclVzZXIiLCJ1c2VySWQiLCJmcm9tVXNlciIsInRvIiwiaWQiLCJ2YWx1ZSIsImNoYXRTY2hlbWFWZXJzaW9uIiwiYWNjZXNzIiwicHVycG9zZSIsImNoZWNrUmV2aXNpb24iLCJlbnRyeSIsImV4cGVjdGVkIiwiZXZlbnQiLCJyZXNvdXJjZUlkIiwiYWN0b3JQZXJzb25hSWQiLCJtZW1iZXJzaGlwRXBvY2giLCJyZWNlaXB0IiwiYWN0aW9uIiwia2V5IiwiaWRlbXBvdGVuY3lLZXkiLCJwYXlsb2FkSGFzaCIsInByaW9yIiwicmVzdWx0Iiwic2F2ZSIsImFkZGVkIiwiRGF0ZSIsIm5vdyIsIm93bmVyVXNlcklkIiwicmF0ZUxpbWl0IiwiTWF0aCIsImZsb29yIiwiYWRkTWVtYmVyIiwiZXZlbnRTZXF1ZW5jZSIsIl9mcm9tIiwiX3RvIiwiYWNjZXB0ZWRBdCIsImN1cnJlbnRLZXkiLCJqb2luRXZlbnRTZXF1ZW5jZSIsImFkZEludml0ZSIsImludml0ZWVQZXJzb25hSWQiLCJpbnZpdGVlVXNlcklkIiwiY3JlYXRlZEF0IiwiZXhwaXJlSW52aXRlcyIsImdldE9yQ3JlYXRlRGlyZWN0IiwicGFydGljaXBhbnRQZXJzb25hSWQiLCJwYWlyIiwic29ydCIsImV4aXN0aW5nIiwibGFzdFNlcXVlbmNlIiwiY3JlYXRlZEJ5UGVyc29uYUlkIiwiZGlyZWN0UGFpcktleSIsImlzRGlyZWN0Iiwib3duIiwiY3JlYXRlR3JvdXAiLCJyZXF1ZXN0IiwidGFyZ2V0cyIsIm1lbWJlclBlcnNvbmFJZHMiLCJwdXNoIiwiY29udGVudFZlcnNpb24iLCJuYW1lQ29udGVudFZlcnNpb24iLCJuYW1lRGVjaXNpb24iLCJjbGFzc2lmeU5hbWUiLCJpbnZpdGVNZW1iZXIiLCJleHBlY3RlZFJldmlzaW9uIiwiY291bnRzIiwiYWN0aXZlIiwidG90YWwiLCJyZXNvbHZlSW52aXRlIiwiYWNjZXB0IiwiaW52aXRlIiwiY3VycmVudCIsImludml0ZXIiLCJpbmNsdWRlcyIsInVwZGF0ZWQiLCJjb3VudCIsImNoYW5nZU1lbWJlcnNoaXAiLCJvd25BY2Nlc3MiLCJ0YXJnZXRQZXJzb25hSWQiLCJsZWF2aW5nIiwib3duUmVzdWx0Iiwic2VxdWVuY2UiLCJjbG9zZSIsImxpc3RDb252ZXJzYXRpb25zIiwiaWRzIiwiYWZ0ZXIiLCJsaW1pdCIsInJlc3VsdHMiLCJwZWVyIiwiZXJyb3IiLCJjb2RlIiwibGlzdEludml0ZXMiLCJyZWNvcmRzIiwibWFwIiwiZ2V0UGFydGljaXBhbnRzIiwidmlld2VyUGVyc29uYSIsInZpZXdlclVzZXIiLCJhY2NlcHRJbnZpdGUiLCJjaGFuZ2VNZW1iZXJSb2xlIiwiZGVjbGluZUludml0ZSIsImxlYXZlQ29udmVyc2F0aW9uIiwicmVtb3ZlTWVtYmVyIiwidHJhbnNmZXJPd25lcnNoaXAiLCJ2YWxpZCIsImNvbmRpdGlvbiIsIm11dGF0aW9uIiwiQm9vbGVhbiIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJjb252ZXJzYXRpb25NdXRhdGlvbiIsInRhcmdldGVkTXV0YXRpb24iLCJsaXN0IiwiY3JlYXRlRHVyYWJsZUNvbnZlcnNhdGlvbkFjdGlvbnMiLCJyZXBvc2l0b3J5IiwidHJpbSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwiU2V0Iiwic2l6ZSJdLCJtYXBwaW5ncyI6IkFBQUEsd0dBQXdHLEdBQ3hHLFNBQVFBLFVBQVUsRUFBRUMsVUFBVSxRQUFPLGNBQWM7QUFFbkQsU0FBUUMsU0FBUyxRQUFPLGNBQWM7QUFDdEMsU0FBUUMsZUFBZSxRQUFPLGNBQWM7QUFDNUMsU0FBUUMsMEJBQTBCLEVBQUVDLGdCQUFnQixRQUFPLGtCQUFrQjtBQUM3RSxTQUFRQyx3QkFBd0IsUUFBTyxtQkFBbUI7QUFtQzFELE1B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
|
|
729
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvY29udmVyc2F0aW9ucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1hd2FpdC1pbi1sb29wLCBuby11bmRlcnNjb3JlLWRhbmdsZSAtLSBPcmRlcmVkIHRyYW5zYWN0aW9ucyBhbmQgQXJhbmdvIGlkZW50aXRpZXMuICovXG5pbXBvcnQge2NyZWF0ZUhhc2gsIHJhbmRvbVVVSUR9IGZyb20gJ25vZGU6Y3J5cHRvJztcblxuaW1wb3J0IHtDaGF0RXJyb3J9IGZyb20gJy4vZXJyb3JzLmpzJztcbmltcG9ydCB7YXBwZW5kQ2hhdEV2ZW50fSBmcm9tICcuL2V2ZW50cy5qcyc7XG5pbXBvcnQge2NyZWF0ZU1lbWJlcnNoaXBBdXRob3JpemVyLCBpc0NoYXRJZGVudGlmaWVyfSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuaW1wb3J0IHtjcmVhdGVEdXJhYmxlVHJhbnNhY3Rpb259IGZyb20gJy4vdHJhbnNhY3Rpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7QXV0aG9yaXplZE1lbWJlcnNoaXAsIENoYXRJZGVudGl0eSwgQ2hhdFF1ZXJ5fSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBY2NlcHRJbnZpdGVJbnB1dCwgQ2hhbmdlTWVtYmVyUm9sZUlucHV0LCBDb252ZXJzYXRpb25JbnZpdGUsIENvbnZlcnNhdGlvbk1lbWJlcnNoaXAsXG4gIENvbnZlcnNhdGlvblN1bW1hcnksIENyZWF0ZURpcmVjdElucHV0LCBDcmVhdGVHcm91cElucHV0LCBJbnZpdGVNZW1iZXJJbnB1dCxcbiAgTGVhdmVDb252ZXJzYXRpb25JbnB1dCwgTWVtYmVyc2hpcFJvbGUsIFJlbW92ZU1lbWJlcklucHV0LCBUcmFuc2Zlck93bmVyc2hpcElucHV0XG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnZlcnNhdGlvblJlY29yZCB7XG4gIHJlYWRvbmx5IF9rZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aXZlTWVtYmVyQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgY2hhdFNjaGVtYVZlcnNpb246IG51bWJlcjtcbiAgcmVhZG9ubHkga2luZDogJ2RpcmVjdCcgfCAnZ3JvdXAnO1xuICByZWFkb25seSBsYXN0U2VxdWVuY2U6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcFJldmlzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5hbWVDb250ZW50VmVyc2lvbj86IHN0cmluZztcbiAgcmVhZG9ubHkgbmFtZURlY2lzaW9uPzogdW5rbm93bjtcbiAgcmVhZG9ubHkgc3RhdGU6ICdhY3RpdmUnIHwgJ2Nsb3NlZCcgfCAnZm9ybWluZyc7XG59XG5pbnRlcmZhY2UgTWVtYmVyUmVjb3JkIGV4dGVuZHMgQ29udmVyc2F0aW9uTWVtYmVyc2hpcCB7XG4gIHJlYWRvbmx5IF9rZXk6IHN0cmluZztcbiAgcmVhZG9ubHkgdXNlcklkOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgSW52aXRlUmVjb3JkIGV4dGVuZHMgQ29udmVyc2F0aW9uSW52aXRlIHtcbiAgcmVhZG9ubHkgX2tleTogc3RyaW5nO1xuICByZWFkb25seSBpbnZpdGVlUGVyc29uYUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGludml0ZWVVc2VySWQ6IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdExpc3RJbnB1dCB7XG4gIHJlYWRvbmx5IGFmdGVyPzogc3RyaW5nO1xuICByZWFkb25seSBsaW1pdD86IG51bWJlcjtcbn1cbmNvbnN0IGhhc2ggPSAoaW5wdXQ6IHVua25vd24pOiBzdHJpbmcgPT4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KGlucHV0KSkuZGlnZXN0KCdoZXgnKTtcbmNvbnN0IGludml0ZU1pbGxpc2Vjb25kcyA9IDcgKiAyNCAqIDYwICogNjAgKiAxMDAwO1xuY29uc3QgbWVtYmVyc2hpcER0byA9IChyZWNvcmQ6IENvbnZlcnNhdGlvbk1lbWJlcnNoaXApOiBDb252ZXJzYXRpb25NZW1iZXJzaGlwID0+ICh7XG4gIGNvbnZlcnNhdGlvbklkOiByZWNvcmQuY29udmVyc2F0aW9uSWQsIGVwb2NoOiByZWNvcmQuZXBvY2gsIGpvaW5TZXF1ZW5jZTogcmVjb3JkLmpvaW5TZXF1ZW5jZSxcbiAgbGVmdFNlcXVlbmNlOiByZWNvcmQubGVmdFNlcXVlbmNlLCBwZXJzb25hSWQ6IHJlY29yZC5wZXJzb25hSWQsIHJldmlzaW9uOiByZWNvcmQucmV2aXNpb24sXG4gIHJvbGU6IHJlY29yZC5yb2xlLCBzdGF0ZTogcmVjb3JkLnN0YXRlXG59KTtcbmNvbnN0IGludml0ZUR0byA9IChyZWNvcmQ6IEludml0ZVJlY29yZCk6IENvbnZlcnNhdGlvbkludml0ZSA9PiAoe1xuICBjb252ZXJzYXRpb25JZDogcmVjb3JkLmNvbnZlcnNhdGlvbklkLCBleHBpcmVzQXQ6IHJlY29yZC5leHBpcmVzQXQsIGludml0ZUlkOiByZWNvcmQuX2tleSxcbiAgaW52aXRlZEJ5UGVyc29uYUlkOiByZWNvcmQuaW52aXRlZEJ5UGVyc29uYUlkLCByZXZpc2lvbjogcmVjb3JkLnJldmlzaW9uLCBzdGF0ZTogcmVjb3JkLnN0YXRlXG59KTtcbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZUNvbnZlcnNhdGlvbk9wdGlvbnMge1xuICByZWFkb25seSBhdWRpZW5jZT86ICdtb2JpbGUnIHwgJ3dlYic7XG4gIC8qKiBBbGwgcG9saWN5IHJlYWRzIG11c3QgdXNlIHRoaXMgcXVlcnk7IGV4Y2VwdGlvbnMgZmFpbCB0aGUgdHJhbnNhY3Rpb24uICovXG4gIHJlYWRvbmx5IGF1dGhvcml6ZUlkZW50aXR5OiAocmVhZDogQ2hhdFF1ZXJ5LCBpZGVudGl0eTogQ2hhdElkZW50aXR5KSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBjbGFzc2lmeU5hbWU6IChuYW1lOiBzdHJpbmcsIGNvbnRlbnRWZXJzaW9uOiBzdHJpbmcpID0+IHVua25vd247XG4gIHJlYWRvbmx5IHByb2plY3ROYW1lOiAoY29udmVyc2F0aW9uOiBDb252ZXJzYXRpb25SZWNvcmQsIGF1ZGllbmNlOiAnbW9iaWxlJyB8ICd3ZWInKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IHJlYWRDb2xsZWN0aW9ucz86IHJlYWRvbmx5IHN0cmluZ1tdO1xuICAvKiogQ2FsbGVyIG93bnMgdHJhbnNhY3Rpb24vbG9ja3MvY29tbWl0IHdoZW4gc3VwcGxpZWQ7IG5vIGluZGVwZW5kZW50IGRhdGFiYXNlIGFjY2VzcyBvY2N1cnMuICovXG4gIHJlYWRvbmx5IHF1ZXJ5PzogQ2hhdFF1ZXJ5O1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlRHVyYWJsZUNvbnZlcnNhdGlvblJlcG9zaXRvcnkgPSAoXG4gIGNvbnRleHQ6IEFwaUNvbnRleHQsIGlkZW50aXR5OiBDaGF0SWRlbnRpdHksIG9wdGlvbnM6IER1cmFibGVDb252ZXJzYXRpb25PcHRpb25zXG4pID0+IHtcbiAgY29uc3QgYXVkaWVuY2UgPSBvcHRpb25zLmF1ZGllbmNlIHx8ICdtb2JpbGUnO1xuICBjb25zdCB0cmFuc2FjdCA9IGNyZWF0ZUR1cmFibGVUcmFuc2FjdGlvbihjb250ZXh0LCB7ZXhjbHVzaXZlOiBbXG4gICAgJ2NoYXRJbnZpdGVzJywgJ2NoYXRPdXRib3gnLCAnY2hhdFJhdGVMaW1pdHMnLCAnY2hhdFJlcXVlc3RzJywgJ2NvbnZlcnNhdGlvbnMnLCAnaGFzQ2hhdE1lbWJlcnNoaXAnLCAnaGFzQ29udmVyc2F0aW9uJ1xuICBdLCByZWFkOiBbJ2hhc0Nvbm5lY3Rpb24nLCAncGVyc29uYXMnLCAndXNlcnMnLCAuLi4ob3B0aW9ucy5yZWFkQ29sbGVjdGlvbnMgfHwgW10pXX0sIG9wdGlvbnMucXVlcnkpO1xuICBjb25zdCBzdW1tYXJ5ID0gKGNvbnZlcnNhdGlvbjogQ29udmVyc2F0aW9uUmVjb3JkLCBtZW1iZXI6IENvbnZlcnNhdGlvbk1lbWJlcnNoaXAsXG4gICAgYXVkaWVuY2U6ICdtb2JpbGUnIHwgJ3dlYicsIGluY2x1ZGVOYW1lID0gZmFsc2UpOiBDb252ZXJzYXRpb25TdW1tYXJ5ID0+ICh7XG4gICAgYWN0aXZlTWVtYmVyQ291bnQ6IGNvbnZlcnNhdGlvbi5hY3RpdmVNZW1iZXJDb3VudCwgY29udmVyc2F0aW9uSWQ6IGNvbnZlcnNhdGlvbi5fa2V5LFxuICAgIGtpbmQ6IGNvbnZlcnNhdGlvbi5raW5kLCBtZW1iZXJzaGlwOiBtZW1iZXJzaGlwRHRvKG1lbWJlciksIG1lbWJlcnNoaXBSZXZpc2lvbjogY29udmVyc2F0aW9uLm1lbWJlcnNoaXBSZXZpc2lvbixcbiAgICBuYW1lOiBpbmNsdWRlTmFtZSA/IG9wdGlvbnMucHJvamVjdE5hbWUoY29udmVyc2F0aW9uLCBhdWRpZW5jZSkgOiB1bmRlZmluZWQsIHN0YXRlOiBjb252ZXJzYXRpb24uc3RhdGVcbiAgfSk7XG4gIGNvbnN0IGFjdG9yID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IGFsbG93ZWQgPSBhd2FpdCByZWFkPGJvb2xlYW4+KGBMRVQgcGVyc29uYSA9IERPQ1VNRU5UKCdwZXJzb25hcycsIEBwZXJzb25hSWQpXG4gICAgICBMRVQgdXNlciA9IERPQ1VNRU5UKCd1c2VycycsIEB1c2VySWQpXG4gICAgICBSRVRVUk4gcGVyc29uYSAhPSBudWxsIEFORCBwZXJzb25hLnVzZXJJZCA9PSBAdXNlcklkIEFORCBwZXJzb25hLmFjdGl2ZSAhPSBmYWxzZVxuICAgICAgICBBTkQgdXNlciAhPSBudWxsIEFORCB1c2VyLmFjdGl2ZSAhPSBmYWxzZWAsIHsuLi5pZGVudGl0eX0pO1xuICAgIGlmKGFsbG93ZWQgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICBhd2FpdCBhZHVsdChyZWFkLCBpZGVudGl0eSk7XG4gIH07XG4gIGNvbnN0IGFkdWx0ID0gKHJlYWQ6IENoYXRRdWVyeSwgd2hvOiBDaGF0SWRlbnRpdHkpOiBQcm9taXNlPHZvaWQ+ID0+IG9wdGlvbnMuYXV0aG9yaXplSWRlbnRpdHkocmVhZCwgd2hvKTtcbiAgY29uc3QgY29ubmVjdGVkID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSwgZnJvbTogQ2hhdElkZW50aXR5LCBwZXJzb25hSWQ6IHN0cmluZyk6IFByb21pc2U8Q2hhdElkZW50aXR5PiA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gYXdhaXQgcmVhZDxDaGF0SWRlbnRpdHk+KGBMRVQgcGVyc29uYSA9IERPQ1VNRU5UKCdwZXJzb25hcycsIEBwZXJzb25hSWQpXG4gICAgICBMRVQgdXNlciA9IERPQ1VNRU5UKCd1c2VycycsIHBlcnNvbmEudXNlcklkKVxuICAgICAgTEVUIGZvbGxvd2luZyA9IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UuX2Zyb20gPT0gQGZyb20gQU5EIGVkZ2UuX3RvID09IEB0b1xuICAgICAgICBBTkQgZWRnZS50eXBlID09ICdmb2xsb3cnIEFORCBlZGdlLmFjdGl2ZSAhPSBmYWxzZSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgTEVUIGZvbGxvd2VkID0gRklSU1QoRk9SIGVkZ2UgSU4gaGFzQ29ubmVjdGlvbiBGSUxURVIgZWRnZS5fdG8gPT0gQGZyb20gQU5EIGVkZ2UuX2Zyb20gPT0gQHRvXG4gICAgICAgIEFORCBlZGdlLnR5cGUgPT0gJ2ZvbGxvdycgQU5EIGVkZ2UuYWN0aXZlICE9IGZhbHNlIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgICBMRVQgYmxvY2tlZCA9IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UudHlwZSA9PSAnYmxvY2snXG4gICAgICAgIEFORCAoKGVkZ2UuX2Zyb20gSU4gW0Bmcm9tLCBAZnJvbVVzZXJdIEFORCBlZGdlLl90byBJTiBbQHRvLCBDT05DQVQoJ3VzZXJzLycsIHBlcnNvbmEudXNlcklkKV0pXG4gICAgICAgICAgT1IgKGVkZ2UuX3RvIElOIFtAZnJvbSwgQGZyb21Vc2VyXSBBTkQgZWRnZS5fZnJvbSBJTiBbQHRvLCBDT05DQVQoJ3VzZXJzLycsIHBlcnNvbmEudXNlcklkKV0pKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgRklMVEVSIHBlcnNvbmEgIT0gbnVsbCBBTkQgdXNlciAhPSBudWxsIEFORCBwZXJzb25hLmFjdGl2ZSAhPSBmYWxzZSBBTkQgdXNlci5hY3RpdmUgIT0gZmFsc2VcbiAgICAgICAgQU5EIHBlcnNvbmEudXNlcklkICE9IEBhY3RvclVzZXIgQU5EIGZvbGxvd2luZyA9PSB0cnVlIEFORCBmb2xsb3dlZCA9PSB0cnVlIEFORCBibG9ja2VkICE9IHRydWVcbiAgICAgIFJFVFVSTiB7cGVyc29uYUlkOiBAcGVyc29uYUlkLCB1c2VySWQ6IHBlcnNvbmEudXNlcklkfWAsIHtcbiAgICAgIGFjdG9yVXNlcjogZnJvbS51c2VySWQsIGZyb206IGBwZXJzb25hcy8ke2Zyb20ucGVyc29uYUlkfWAsIGZyb21Vc2VyOiBgdXNlcnMvJHtmcm9tLnVzZXJJZH1gLFxuICAgICAgcGVyc29uYUlkLCB0bzogYHBlcnNvbmFzLyR7cGVyc29uYUlkfWBcbiAgICB9KTtcbiAgICBpZighdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICB9XG4gICAgYXdhaXQgYWR1bHQocmVhZCwgdGFyZ2V0KTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICBjb25zdCBjb252ZXJzYXRpb24gPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBpZDogc3RyaW5nKTogUHJvbWlzZTxDb252ZXJzYXRpb25SZWNvcmQ+ID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGF3YWl0IHJlYWQ8Q29udmVyc2F0aW9uUmVjb3JkPignUkVUVVJOIERPQ1VNRU5UKFwiY29udmVyc2F0aW9uc1wiLCBAaWQpJywge2lkfSk7XG4gICAgaWYoIXZhbHVlIHx8IHZhbHVlLmNoYXRTY2hlbWFWZXJzaW9uICE9PSAxIHx8IHZhbHVlLnN0YXRlID09PSAnY2xvc2VkJykge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignZm9yYmlkZGVuJyk7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfTtcbiAgY29uc3QgbWVtYmVyID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSwgY29udmVyc2F0aW9uSWQ6IHN0cmluZywgcGVyc29uYUlkOiBzdHJpbmcpOiBQcm9taXNlPE1lbWJlclJlY29yZD4gPT4ge1xuICAgIGNvbnN0IHZhbHVlID0gYXdhaXQgcmVhZDxNZW1iZXJSZWNvcmQ+KGBGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwIEZJTFRFUiBtZW1iZXIuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkXG4gICAgICBBTkQgbWVtYmVyLnBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBtZW1iZXIuc3RhdGUgPT0gJ2FjdGl2ZScgTElNSVQgMSBSRVRVUk4gbWVtYmVyYCwge2NvbnZlcnNhdGlvbklkLCBwZXJzb25hSWR9KTtcbiAgICBpZighdmFsdWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH07XG4gIGNvbnN0IGFjY2VzcyA9IChyZWFkOiBDaGF0UXVlcnksIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIHB1cnBvc2U6ICdpbnZpdGUnIHwgJ3BhcnRpY2lwYW50cycgPSAncGFydGljaXBhbnRzJykgPT5cbiAgICBjcmVhdGVNZW1iZXJzaGlwQXV0aG9yaXplcihyZWFkKShpZGVudGl0eSwge2NvbnZlcnNhdGlvbklkLCBwdXJwb3NlfSk7XG4gIGNvbnN0IGNoZWNrUmV2aXNpb24gPSAoZW50cnk6IEF1dGhvcml6ZWRNZW1iZXJzaGlwLCBleHBlY3RlZDogbnVtYmVyKTogdm9pZCA9PiB7XG4gICAgaWYoZW50cnkubWVtYmVyc2hpcFJldmlzaW9uICE9PSBleHBlY3RlZCB8fCBlbnRyeS5raW5kICE9PSAnZ3JvdXAnKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdjb25mbGljdCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgZXZlbnQgPSBhc3luYyAoXG4gICAgcmVhZDogQ2hhdFF1ZXJ5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nLCBlcG9jaDogc3RyaW5nLCByZXNvdXJjZUlkOiBzdHJpbmcsIHJldmlzaW9uOiBudW1iZXJcbiAgKSA9PiB7XG4gICAgYXdhaXQgYXBwZW5kQ2hhdEV2ZW50KHJlYWQsIHthY3RvclBlcnNvbmFJZDogaWRlbnRpdHkucGVyc29uYUlkLCBjb252ZXJzYXRpb25JZCwga2luZDogJ21lbWJlcnNoaXAuY2hhbmdlZCcsXG4gICAgICAuLi4oZXBvY2ggPyB7bWVtYmVyc2hpcEVwb2NoOiBlcG9jaH0gOiB7fSksIHJlc291cmNlSWQsIHJldmlzaW9ufSk7XG4gIH07XG4gIGNvbnN0IHJlY2VpcHQgPSBhc3luYyA8VD4ocmVhZDogQ2hhdFF1ZXJ5LCBhY3Rpb246IHN0cmluZywgaW5wdXQ6IHtyZWFkb25seSBpZGVtcG90ZW5jeUtleTogc3RyaW5nfSkgPT4ge1xuICAgIGNvbnN0IGtleSA9IGhhc2goW2lkZW50aXR5LnVzZXJJZCwgaWRlbnRpdHkucGVyc29uYUlkLCBhY3Rpb24sIGlucHV0LmlkZW1wb3RlbmN5S2V5XSk7XG4gICAgY29uc3QgcGF5bG9hZEhhc2ggPSBoYXNoKGlucHV0KTtcbiAgICBjb25zdCBwcmlvciA9IGF3YWl0IHJlYWQ8e3JlYWRvbmx5IHBheWxvYWRIYXNoOiBzdHJpbmc7IHJlYWRvbmx5IHJlc3VsdDogVH0+KCdSRVRVUk4gRE9DVU1FTlQoXCJjaGF0UmVxdWVzdHNcIiwgQGtleSknLCB7a2V5fSk7XG4gICAgaWYocHJpb3IgJiYgcHJpb3IucGF5bG9hZEhhc2ggIT09IHBheWxvYWRIYXNoKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdjb25mbGljdCcpO1xuICAgIH1cbiAgICByZXR1cm4ge3ByaW9yOiBwcmlvcj8ucmVzdWx0LCBzYXZlOiAocmVzdWx0OiBUKSA9PiByZWFkKCdJTlNFUlQgQHJlY29yZCBJTiBjaGF0UmVxdWVzdHMgUkVUVVJOIHRydWUnLCB7XG4gICAgICByZWNvcmQ6IHtfa2V5OiBrZXksIGFkZGVkOiBEYXRlLm5vdygpLCBvd25lclVzZXJJZDogaWRlbnRpdHkudXNlcklkLCBwYXlsb2FkSGFzaCxcbiAgICAgICAgcGVyc29uYUlkOiBpZGVudGl0eS5wZXJzb25hSWQsIHJlc3VsdH1cbiAgICB9KX07XG4gIH07XG4gIGNvbnN0IHJhdGVMaW1pdCA9IGFzeW5jIChyZWFkOiBDaGF0UXVlcnkpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCBrZXkgPSBoYXNoKFtpZGVudGl0eS51c2VySWQsIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDM2MDAwMDApXSk7XG4gICAgY29uc3QgYWxsb3dlZCA9IGF3YWl0IHJlYWQ8Ym9vbGVhbj4oYExFVCBidWNrZXQgPSBET0NVTUVOVCgnY2hhdFJhdGVMaW1pdHMnLCBAa2V5KVxuICAgICAgRklMVEVSIGJ1Y2tldCA9PSBudWxsIE9SIGJ1Y2tldC5jb3VudCA8IDUwXG4gICAgICBVUFNFUlQge19rZXk6IEBrZXl9IElOU0VSVCB7X2tleTogQGtleSwgY291bnQ6IDEsIHVzZXJJZDogQHVzZXJJZH0gVVBEQVRFIHtjb3VudDogT0xELmNvdW50ICsgMSwgdXNlcklkOiBAdXNlcklkfVxuICAgICAgSU4gY2hhdFJhdGVMaW1pdHMgUkVUVVJOIHRydWVgLCB7a2V5LCB1c2VySWQ6IGlkZW50aXR5LnVzZXJJZH0pO1xuICAgIGlmKGFsbG93ZWQgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3JhdGVfbGltaXRlZCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgYWRkTWVtYmVyID0gYXN5bmMgKFxuICAgIHJlYWQ6IENoYXRRdWVyeSwgY29udmVyc2F0aW9uSWQ6IHN0cmluZywgd2hvOiBDaGF0SWRlbnRpdHksIHJvbGU6IE1lbWJlcnNoaXBSb2xlLCBqb2luU2VxdWVuY2U6IG51bWJlclxuICApOiBQcm9taXNlPE1lbWJlclJlY29yZD4gPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IGV2ZW50U2VxdWVuY2UgPSBhd2FpdCByZWFkPG51bWJlcj4oXG4gICAgICAnUkVUVVJOIERPQ1VNRU5UKFwiY29udmVyc2F0aW9uc1wiLCBAY29udmVyc2F0aW9uSWQpLmxhc3RFdmVudFNlcXVlbmNlIHx8IDAnLCB7Y29udmVyc2F0aW9uSWR9KTtcbiAgICBjb25zdCByZWNvcmQgPSB7X2Zyb206IGBwZXJzb25hcy8ke3doby5wZXJzb25hSWR9YCwgX2tleTogaWQsIF90bzogYGNvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb25JZH1gLFxuICAgICAgYWNjZXB0ZWRBdDogRGF0ZS5ub3coKSwgY29udmVyc2F0aW9uSWQsIGN1cnJlbnRLZXk6IGAke2NvbnZlcnNhdGlvbklkfToke3doby5wZXJzb25hSWR9YCwgZXBvY2g6IHJhbmRvbVVVSUQoKSxcbiAgICAgIGpvaW5FdmVudFNlcXVlbmNlOiBqb2luU2VxdWVuY2UgPiAwID8gKGV2ZW50U2VxdWVuY2UgfHwgMCkgKyAxIDogMCwgam9pblNlcXVlbmNlLCBwZXJzb25hSWQ6IHdoby5wZXJzb25hSWQsIHJldmlzaW9uOiAxLCByb2xlLCBzdGF0ZTogJ2FjdGl2ZScgYXMgY29uc3QsIHVzZXJJZDogd2hvLnVzZXJJZH07XG4gICAgYXdhaXQgcmVhZCgnSU5TRVJUIEByZWNvcmQgSU4gaGFzQ2hhdE1lbWJlcnNoaXAgUkVUVVJOIHRydWUnLCB7cmVjb3JkfSk7XG4gICAgYXdhaXQgcmVhZChgVVBTRVJUIHtfZnJvbTogQGZyb20sIF90bzogQHRvfVxuICAgICAgSU5TRVJUIHtfZnJvbTogQGZyb20sIF90bzogQHRvLCBhZGRlZDogQG5vdywgY29udmVyc2F0aW9uSWQ6IEBjb252ZXJzYXRpb25JZCwgdXNlcklkOiBAdXNlcklkfVxuICAgICAgVVBEQVRFIHt9IElOIGhhc0NvbnZlcnNhdGlvbiBSRVRVUk4gdHJ1ZWAsIHtcbiAgICAgIGNvbnZlcnNhdGlvbklkLCBmcm9tOiBgdXNlcnMvJHt3aG8udXNlcklkfWAsIG5vdzogRGF0ZS5ub3coKSwgdG86IGBjb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uSWR9YCwgdXNlcklkOiB3aG8udXNlcklkXG4gICAgfSk7XG4gICAgcmV0dXJuIHJlY29yZDtcbiAgfTtcbiAgY29uc3QgYWRkSW52aXRlID0gYXN5bmMgKHJlYWQ6IENoYXRRdWVyeSwgY29udmVyc2F0aW9uSWQ6IHN0cmluZywgd2hvOiBDaGF0SWRlbnRpdHkpOiBQcm9taXNlPENvbnZlcnNhdGlvbkludml0ZT4gPT4ge1xuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IHJlY29yZDogSW52aXRlUmVjb3JkID0ge19rZXk6IGlkLCBjb252ZXJzYXRpb25JZCwgZXhwaXJlc0F0OiBEYXRlLm5vdygpICsgaW52aXRlTWlsbGlzZWNvbmRzLFxuICAgICAgaW52aXRlSWQ6IGlkLCBpbnZpdGVkQnlQZXJzb25hSWQ6IGlkZW50aXR5LnBlcnNvbmFJZCwgaW52aXRlZVBlcnNvbmFJZDogd2hvLnBlcnNvbmFJZCwgaW52aXRlZVVzZXJJZDogd2hvLnVzZXJJZCwgcmV2aXNpb246IDEsIHN0YXRlOiAncGVuZGluZyd9O1xuICAgIGF3YWl0IHJlYWQoJ0lOU0VSVCBAcmVjb3JkIElOIGNoYXRJbnZpdGVzIFJFVFVSTiB0cnVlJywge3JlY29yZDogey4uLnJlY29yZCxcbiAgICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSwgY3VycmVudEtleTogYCR7Y29udmVyc2F0aW9uSWR9OiR7d2hvLnBlcnNvbmFJZH1gLCByb2xlOiAnbWVtYmVyJ319KTtcbiAgICBhd2FpdCBldmVudChyZWFkLCBjb252ZXJzYXRpb25JZCwgJycsIGlkLCAxKTtcbiAgICByZXR1cm4gaW52aXRlRHRvKHJlY29yZCk7XG4gIH07XG4gIGNvbnN0IGV4cGlyZUludml0ZXMgPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgcmVhZChgRk9SIGludml0ZSBJTiBjaGF0SW52aXRlcyBGSUxURVIgaW52aXRlLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZFxuICAgICAgQU5EIGludml0ZS5zdGF0ZSA9PSAncGVuZGluZycgQU5EIGludml0ZS5leHBpcmVzQXQgPD0gQG5vd1xuICAgICAgVVBEQVRFIGludml0ZSBXSVRIIHtjdXJyZW50S2V5OiBudWxsLCByZXNvbHZlZEF0OiBAbm93LCByZXZpc2lvbjogaW52aXRlLnJldmlzaW9uICsgMSwgc3RhdGU6ICdleHBpcmVkJ31cbiAgICAgIElOIGNoYXRJbnZpdGVzIFJFVFVSTiB0cnVlYCwge2NvbnZlcnNhdGlvbklkLCBub3c6IERhdGUubm93KCl9KTtcbiAgfTtcbiAgY29uc3QgZ2V0T3JDcmVhdGVEaXJlY3QgPSAoaW5wdXQ6IENyZWF0ZURpcmVjdElucHV0KTogUHJvbWlzZTxDb252ZXJzYXRpb25TdW1tYXJ5PiA9PiB0cmFuc2FjdChhc3luYyAocmVhZCkgPT4ge1xuICAgIGF3YWl0IGFjdG9yKHJlYWQpO1xuICAgIGNvbnN0IHRhcmdldCA9IGF3YWl0IGNvbm5lY3RlZChyZWFkLCBpZGVudGl0eSwgaW5wdXQucGFydGljaXBhbnRQZXJzb25hSWQpO1xuICAgIGNvbnN0IHBhaXIgPSBoYXNoKFsnZGlyZWN0LXYxJywgLi4uW2lkZW50aXR5LnBlcnNvbmFJZCwgdGFyZ2V0LnBlcnNvbmFJZF0uc29ydCgpXSk7XG4gICAgY29uc3QgZXhpc3RpbmcgPSBhd2FpdCByZWFkPENvbnZlcnNhdGlvblJlY29yZD4oJ0ZPUiBjIElOIGNvbnZlcnNhdGlvbnMgRklMVEVSIGMuZGlyZWN0UGFpcktleSA9PSBAcGFpciBMSU1JVCAxIFJFVFVSTiBjJywge3BhaXJ9KTtcbiAgICBpZihleGlzdGluZykge1xuICAgICAgYXdhaXQgYWNjZXNzKHJlYWQsIGV4aXN0aW5nLl9rZXkpO1xuICAgICAgcmV0dXJuIHN1bW1hcnkoZXhpc3RpbmcsIGF3YWl0IG1lbWJlcihyZWFkLCBleGlzdGluZy5fa2V5LCBpZGVudGl0eS5wZXJzb25hSWQpLCBhdWRpZW5jZSk7XG4gICAgfVxuICAgIGF3YWl0IHJhdGVMaW1pdChyZWFkKTtcbiAgICBjb25zdCBpZCA9IGBkaXJlY3QtJHtwYWlyfWA7XG4gICAgY29uc3QgcmVjb3JkOiBDb252ZXJzYXRpb25SZWNvcmQgPSB7X2tleTogaWQsIGFjdGl2ZU1lbWJlckNvdW50OiAyLCBjaGF0U2NoZW1hVmVyc2lvbjogMSxcbiAgICAgIGtpbmQ6ICdkaXJlY3QnLCBsYXN0U2VxdWVuY2U6IDAsIG1lbWJlcnNoaXBSZXZpc2lvbjogMSwgc3RhdGU6ICdhY3RpdmUnfTtcbiAgICBhd2FpdCByZWFkKCdJTlNFUlQgQHJlY29yZCBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiB0cnVlJywge3JlY29yZDogey4uLnJlY29yZCxcbiAgICAgIGFkZGVkOiBEYXRlLm5vdygpLCBjcmVhdGVkQnlQZXJzb25hSWQ6IGlkZW50aXR5LnBlcnNvbmFJZCwgZGlyZWN0UGFpcktleTogcGFpciwgaXNEaXJlY3Q6IHRydWV9fSk7XG4gICAgY29uc3Qgb3duID0gYXdhaXQgYWRkTWVtYmVyKHJlYWQsIGlkLCBpZGVudGl0eSwgJ21lbWJlcicsIDApO1xuICAgIGF3YWl0IGFkZE1lbWJlcihyZWFkLCBpZCwgdGFyZ2V0LCAnbWVtYmVyJywgMCk7XG4gICAgYXdhaXQgZXZlbnQocmVhZCwgaWQsIG93bi5lcG9jaCwgaWQsIDEpO1xuICAgIHJldHVybiBzdW1tYXJ5KHJlY29yZCwgb3duLCBhdWRpZW5jZSk7XG4gIH0pO1xuICBjb25zdCBjcmVhdGVHcm91cCA9IChpbnB1dDogQ3JlYXRlR3JvdXBJbnB1dCk6IFByb21pc2U8Q29udmVyc2F0aW9uU3VtbWFyeT4gPT4gdHJhbnNhY3QoYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxDb252ZXJzYXRpb25TdW1tYXJ5PihyZWFkLCAnY3JlYXRlR3JvdXAnLCBpbnB1dCk7XG4gICAgaWYocmVxdWVzdC5wcmlvcikge1xuICAgICAgcmV0dXJuIHJlcXVlc3QucHJpb3I7XG4gICAgfVxuICAgIGF3YWl0IHJhdGVMaW1pdChyZWFkKTtcbiAgICBjb25zdCB0YXJnZXRzOiBDaGF0SWRlbnRpdHlbXSA9IFtdO1xuICAgIGZvcihjb25zdCBwZXJzb25hSWQgb2YgaW5wdXQubWVtYmVyUGVyc29uYUlkcykge1xuICAgICAgdGFyZ2V0cy5wdXNoKGF3YWl0IGNvbm5lY3RlZChyZWFkLCBpZGVudGl0eSwgcGVyc29uYUlkKSk7XG4gICAgfVxuICAgIGNvbnN0IGlkID0gcmFuZG9tVVVJRCgpO1xuICAgIGNvbnN0IGNvbnRlbnRWZXJzaW9uID0gaGFzaChbJ2dyb3VwLW5hbWUnLCBpbnB1dC5uYW1lXSk7XG4gICAgY29uc3QgcmVjb3JkOiBDb252ZXJzYXRpb25SZWNvcmQgPSB7X2tleTogaWQsIGFjdGl2ZU1lbWJlckNvdW50OiAxLCBjaGF0U2NoZW1hVmVyc2lvbjogMSwga2luZDogJ2dyb3VwJyxcbiAgICAgIGxhc3RTZXF1ZW5jZTogMCwgbWVtYmVyc2hpcFJldmlzaW9uOiAxLCBuYW1lOiBpbnB1dC5uYW1lLCBuYW1lQ29udGVudFZlcnNpb246IGNvbnRlbnRWZXJzaW9uLFxuICAgICAgbmFtZURlY2lzaW9uOiBvcHRpb25zLmNsYXNzaWZ5TmFtZShpbnB1dC5uYW1lLCBjb250ZW50VmVyc2lvbiksIHN0YXRlOiAnZm9ybWluZyd9O1xuICAgIGF3YWl0IHJlYWQoJ0lOU0VSVCBAcmVjb3JkIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIHRydWUnLCB7cmVjb3JkOiB7Li4ucmVjb3JkLFxuICAgICAgYWRkZWQ6IERhdGUubm93KCksIGNyZWF0ZWRCeVBlcnNvbmFJZDogaWRlbnRpdHkucGVyc29uYUlkLCBpc0RpcmVjdDogZmFsc2V9fSk7XG4gICAgY29uc3Qgb3duID0gYXdhaXQgYWRkTWVtYmVyKHJlYWQsIGlkLCBpZGVudGl0eSwgJ293bmVyJywgMCk7XG4gICAgZm9yKGNvbnN0IHRhcmdldCBvZiB0YXJnZXRzKSB7XG4gICAgICBhd2FpdCBhZGRJbnZpdGUocmVhZCwgaWQsIHRhcmdldCk7XG4gICAgfVxuICAgIGF3YWl0IGV2ZW50KHJlYWQsIGlkLCBvd24uZXBvY2gsIGlkLCAxKTtcbiAgICBjb25zdCByZXN1bHQgPSBzdW1tYXJ5KHJlY29yZCwgb3duLCBhdWRpZW5jZSk7XG4gICAgYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG4gIGNvbnN0IGludml0ZU1lbWJlciA9IChpbnB1dDogSW52aXRlTWVtYmVySW5wdXQpOiBQcm9taXNlPENvbnZlcnNhdGlvbkludml0ZT4gPT4gdHJhbnNhY3QoYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxDb252ZXJzYXRpb25JbnZpdGU+KHJlYWQsICdpbnZpdGUnLCBpbnB1dCk7XG4gICAgaWYocmVxdWVzdC5wcmlvcikge1xuICAgICAgcmV0dXJuIHJlcXVlc3QucHJpb3I7XG4gICAgfVxuICAgIGNvbnN0IG93biA9IGF3YWl0IGFjY2VzcyhyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCwgJ2ludml0ZScpO1xuICAgIGNoZWNrUmV2aXNpb24ob3duLCBpbnB1dC5leHBlY3RlZFJldmlzaW9uKTtcbiAgICBjb25zdCB0YXJnZXQgPSBhd2FpdCBjb25uZWN0ZWQocmVhZCwgaWRlbnRpdHksIGlucHV0LnBlcnNvbmFJZCk7XG4gICAgYXdhaXQgZXhwaXJlSW52aXRlcyhyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCk7XG4gICAgY29uc3QgcHJpb3IgPSBhd2FpdCByZWFkPEludml0ZVJlY29yZD4oJ0ZPUiBpbnZpdGUgSU4gY2hhdEludml0ZXMgRklMVEVSIGludml0ZS5jdXJyZW50S2V5ID09IEBrZXkgTElNSVQgMSBSRVRVUk4gaW52aXRlJyxcbiAgICAgIHtrZXk6IGAke2lucHV0LmNvbnZlcnNhdGlvbklkfToke2lucHV0LnBlcnNvbmFJZH1gfSk7XG4gICAgaWYocHJpb3IpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGludml0ZUR0byhwcmlvcik7XG4gICAgICBhd2FpdCByZXF1ZXN0LnNhdmUocmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuICAgIGNvbnN0IGNvdW50cyA9IGF3YWl0IHJlYWQ8e3JlYWRvbmx5IGFjdGl2ZTogYm9vbGVhbjsgcmVhZG9ubHkgdG90YWw6IG51bWJlcn0+KGBSRVRVUk4ge1xuICAgICAgYWN0aXZlOiBMRU5HVEgoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcCBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZFxuICAgICAgICBBTkQgbWVtYmVyLnBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBtZW1iZXIuc3RhdGUgPT0gJ2FjdGl2ZScgUkVUVVJOIDEpID4gMCxcbiAgICAgIHRvdGFsOiBMRU5HVEgoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcCBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZFxuICAgICAgICBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnIFJFVFVSTiAxKSArIExFTkdUSChGT1IgaW52aXRlIElOIGNoYXRJbnZpdGVzXG4gICAgICAgIEZJTFRFUiBpbnZpdGUuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkIEFORCBpbnZpdGUuc3RhdGUgPT0gJ3BlbmRpbmcnIEFORCBpbnZpdGUuZXhwaXJlc0F0ID4gQG5vdyBSRVRVUk4gMSlcbiAgICB9YCwge2NvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCwgbm93OiBEYXRlLm5vdygpLCBwZXJzb25hSWQ6IGlucHV0LnBlcnNvbmFJZH0pO1xuICAgIGlmKCFjb3VudHMgfHwgY291bnRzLmFjdGl2ZSB8fCBjb3VudHMudG90YWwgPj0gMjUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2NvbmZsaWN0Jyk7XG4gICAgfVxuICAgIGF3YWl0IHJhdGVMaW1pdChyZWFkKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBhZGRJbnZpdGUocmVhZCwgaW5wdXQuY29udmVyc2F0aW9uSWQsIHRhcmdldCk7XG4gICAgYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG4gIGNvbnN0IHJlc29sdmVJbnZpdGUgPSAoXG4gICAgaW5wdXQ6IEFjY2VwdEludml0ZUlucHV0LCBhY2NlcHQ6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTxDb252ZXJzYXRpb25TdW1tYXJ5IHwgQ29udmVyc2F0aW9uSW52aXRlPiA9PlxuICAgIHRyYW5zYWN0KGFzeW5jIChyZWFkKSA9PiB7XG4gICAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCByZWNlaXB0PENvbnZlcnNhdGlvblN1bW1hcnkgfCBDb252ZXJzYXRpb25JbnZpdGU+KHJlYWQsIGFjY2VwdCA/ICdhY2NlcHQnIDogJ2RlY2xpbmUnLCBpbnB1dCk7XG4gICAgICBpZihyZXF1ZXN0LnByaW9yKSB7XG4gICAgICAgIHJldHVybiByZXF1ZXN0LnByaW9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaW52aXRlID0gYXdhaXQgcmVhZDxJbnZpdGVSZWNvcmQ+KCdSRVRVUk4gRE9DVU1FTlQoXCJjaGF0SW52aXRlc1wiLCBAaWQpJywge2lkOiBpbnB1dC5pbnZpdGVJZH0pO1xuICAgICAgaWYoIWludml0ZSB8fCBpbnZpdGUuaW52aXRlZVBlcnNvbmFJZCAhPT0gaWRlbnRpdHkucGVyc29uYUlkIHx8IGludml0ZS5pbnZpdGVlVXNlcklkICE9PSBpZGVudGl0eS51c2VySWRcbiAgICAgICAgfHwgaW52aXRlLnN0YXRlICE9PSAncGVuZGluZycgfHwgaW52aXRlLmV4cGlyZXNBdCA8PSBEYXRlLm5vdygpKSB7XG4gICAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgICAgfVxuICAgICAgaWYoaW52aXRlLnJldmlzaW9uICE9PSBpbnB1dC5leHBlY3RlZFJldmlzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2NvbmZsaWN0Jyk7XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50ID0gYXdhaXQgY29udmVyc2F0aW9uKHJlYWQsIGludml0ZS5jb252ZXJzYXRpb25JZCk7XG4gICAgICBpZihjdXJyZW50LmtpbmQgIT09ICdncm91cCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignZm9yYmlkZGVuJyk7XG4gICAgICB9XG4gICAgICBsZXQgcmVzdWx0OiBDb252ZXJzYXRpb25TdW1tYXJ5IHwgQ29udmVyc2F0aW9uSW52aXRlO1xuICAgICAgaWYoYWNjZXB0KSB7XG4gICAgICAgIGNvbnN0IGludml0ZXIgPSBhd2FpdCBtZW1iZXIocmVhZCwgY3VycmVudC5fa2V5LCBpbnZpdGUuaW52aXRlZEJ5UGVyc29uYUlkKTtcbiAgICAgICAgaWYoIVsnb3duZXInLCAnYWRtaW4nXS5pbmNsdWRlcyhpbnZpdGVyLnJvbGUpIHx8IGN1cnJlbnQuYWN0aXZlTWVtYmVyQ291bnQgPj0gMjUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBhZHVsdChyZWFkLCB7cGVyc29uYUlkOiBpbnZpdGVyLnBlcnNvbmFJZCwgdXNlcklkOiBpbnZpdGVyLnVzZXJJZH0pO1xuICAgICAgICBhd2FpdCBjb25uZWN0ZWQocmVhZCwge3BlcnNvbmFJZDogaW52aXRlci5wZXJzb25hSWQsIHVzZXJJZDogaW52aXRlci51c2VySWR9LCBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgICBjb25zdCBvd24gPSBhd2FpdCBhZGRNZW1iZXIocmVhZCwgY3VycmVudC5fa2V5LCBpZGVudGl0eSwgJ21lbWJlcicsIGN1cnJlbnQubGFzdFNlcXVlbmNlICsgMSk7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCByZWFkPENvbnZlcnNhdGlvblJlY29yZD4oYFVQREFURSBAaWQgV0lUSCB7XG4gICAgICAgICAgYWN0aXZlTWVtYmVyQ291bnQ6IEBjb3VudCwgbWVtYmVyc2hpcFJldmlzaW9uOiBAcmV2aXNpb24sIHN0YXRlOiBAc3RhdGV9XG4gICAgICAgICAgSU4gY29udmVyc2F0aW9ucyBSRVRVUk4gTkVXYCwge2NvdW50OiBjdXJyZW50LmFjdGl2ZU1lbWJlckNvdW50ICsgMSwgaWQ6IGN1cnJlbnQuX2tleSxcbiAgICAgICAgICByZXZpc2lvbjogY3VycmVudC5tZW1iZXJzaGlwUmV2aXNpb24gKyAxLFxuICAgICAgICAgIHN0YXRlOiBjdXJyZW50LmFjdGl2ZU1lbWJlckNvdW50ICsgMSA+PSAzID8gJ2FjdGl2ZScgOiBjdXJyZW50LnN0YXRlfSk7XG4gICAgICAgIGlmKCF1cGRhdGVkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcigndW5hdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBldmVudChyZWFkLCBjdXJyZW50Ll9rZXksIG93bi5lcG9jaCwgb3duLl9rZXksIHVwZGF0ZWQubWVtYmVyc2hpcFJldmlzaW9uKTtcbiAgICAgICAgcmVzdWx0ID0gc3VtbWFyeSh1cGRhdGVkLCBvd24sIGF1ZGllbmNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdCA9IHsuLi5pbnZpdGVEdG8oaW52aXRlKSwgcmV2aXNpb246IGludml0ZS5yZXZpc2lvbiArIDEsIHN0YXRlOiAnZGVjbGluZWQnfTtcbiAgICAgICAgYXdhaXQgZXZlbnQocmVhZCwgY3VycmVudC5fa2V5LCAnJywgaW52aXRlLl9rZXksIGludml0ZS5yZXZpc2lvbiArIDEpO1xuICAgICAgfVxuICAgICAgYXdhaXQgcmVhZChgVVBEQVRFIEBpZCBXSVRIIHtjdXJyZW50S2V5OiBudWxsLCByZXNvbHZlZEF0OiBAbm93LCByZXZpc2lvbjogQHJldmlzaW9uLCBzdGF0ZTogQHN0YXRlfVxuICAgICAgICBJTiBjaGF0SW52aXRlcyBSRVRVUk4gdHJ1ZWAsIHtpZDogaW52aXRlLl9rZXksIG5vdzogRGF0ZS5ub3coKSwgcmV2aXNpb246IGludml0ZS5yZXZpc2lvbiArIDEsXG4gICAgICAgIHN0YXRlOiBhY2NlcHQgPyAnYWNjZXB0ZWQnIDogJ2RlY2xpbmVkJ30pO1xuICAgICAgYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICBjb25zdCBjaGFuZ2VNZW1iZXJzaGlwID0gKFxuICAgIGFjdGlvbjogJ2xlYXZlJyB8ICdyZW1vdmUnIHwgJ3JvbGUnIHwgJ3RyYW5zZmVyJyxcbiAgICBpbnB1dDogQ2hhbmdlTWVtYmVyUm9sZUlucHV0IHwgTGVhdmVDb252ZXJzYXRpb25JbnB1dCB8IFJlbW92ZU1lbWJlcklucHV0XG4gICk6IFByb21pc2U8Q29udmVyc2F0aW9uU3VtbWFyeT4gPT4gdHJhbnNhY3QoYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBhY3RvcihyZWFkKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxDb252ZXJzYXRpb25TdW1tYXJ5PihyZWFkLCBhY3Rpb24sIGlucHV0KTtcbiAgICBpZihyZXF1ZXN0LnByaW9yKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdC5wcmlvcjtcbiAgICB9XG4gICAgY29uc3Qgb3duQWNjZXNzID0gYXdhaXQgYWNjZXNzKHJlYWQsIGlucHV0LmNvbnZlcnNhdGlvbklkKTtcbiAgICBjaGVja1JldmlzaW9uKG93bkFjY2VzcywgaW5wdXQuZXhwZWN0ZWRSZXZpc2lvbik7XG4gICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNvbnZlcnNhdGlvbihyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCk7XG4gICAgY29uc3Qgb3duID0gYXdhaXQgbWVtYmVyKHJlYWQsIGN1cnJlbnQuX2tleSwgaWRlbnRpdHkucGVyc29uYUlkKTtcbiAgICBjb25zdCB0YXJnZXRQZXJzb25hSWQgPSAncGVyc29uYUlkJyBpbiBpbnB1dCA/IGlucHV0LnBlcnNvbmFJZCA6IGlkZW50aXR5LnBlcnNvbmFJZDtcbiAgICBjb25zdCB0YXJnZXQgPSB0YXJnZXRQZXJzb25hSWQgPT09IGlkZW50aXR5LnBlcnNvbmFJZCA/IG93biA6IGF3YWl0IG1lbWJlcihyZWFkLCBjdXJyZW50Ll9rZXksIHRhcmdldFBlcnNvbmFJZCk7XG4gICAgY29uc3QgbGVhdmluZyA9IGFjdGlvbiA9PT0gJ2xlYXZlJyB8fCBhY3Rpb24gPT09ICdyZW1vdmUnO1xuICAgIGlmKChhY3Rpb24gPT09ICdyb2xlJyB8fCBhY3Rpb24gPT09ICd0cmFuc2ZlcicpICYmIChvd24ucm9sZSAhPT0gJ293bmVyJyB8fCB0YXJnZXQuX2tleSA9PT0gb3duLl9rZXkpKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICB9XG4gICAgaWYoYWN0aW9uID09PSAncmVtb3ZlJyAmJiAodGFyZ2V0Ll9rZXkgPT09IG93bi5fa2V5IHx8IHRhcmdldC5yb2xlID09PSAnb3duZXInXG4gICAgICB8fCAhWydvd25lcicsICdhZG1pbiddLmluY2x1ZGVzKG93bi5yb2xlKSB8fCAob3duLnJvbGUgPT09ICdhZG1pbicgJiYgdGFyZ2V0LnJvbGUgIT09ICdtZW1iZXInKSkpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICBpZihhY3Rpb24gPT09ICdsZWF2ZScgJiYgb3duLnJvbGUgPT09ICdvd25lcicgJiYgY3VycmVudC5hY3RpdmVNZW1iZXJDb3VudCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2NvbmZsaWN0Jyk7XG4gICAgfVxuICAgIGlmKGFjdGlvbiA9PT0gJ3JvbGUnICYmIHRhcmdldC5yb2xlID09PSAnb3duZXInKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgICB9XG4gICAgaWYoYWN0aW9uID09PSAndHJhbnNmZXInIHx8IChhY3Rpb24gPT09ICdyb2xlJyAmJiAncm9sZScgaW4gaW5wdXQgJiYgaW5wdXQucm9sZSA9PT0gJ2FkbWluJykpIHtcbiAgICAgIGF3YWl0IGFkdWx0KHJlYWQsIHtwZXJzb25hSWQ6IHRhcmdldC5wZXJzb25hSWQsIHVzZXJJZDogdGFyZ2V0LnVzZXJJZH0pO1xuICAgIH1cbiAgICBsZXQgb3duUmVzdWx0ID0gb3duO1xuICAgIGlmKGFjdGlvbiA9PT0gJ3RyYW5zZmVyJykge1xuICAgICAgYXdhaXQgcmVhZCgnVVBEQVRFIEBpZCBXSVRIIHtyb2xlOiBcImFkbWluXCIsIHJldmlzaW9uOiBAcmV2aXNpb259IElOIGhhc0NoYXRNZW1iZXJzaGlwIFJFVFVSTiB0cnVlJyxcbiAgICAgICAge2lkOiBvd24uX2tleSwgcmV2aXNpb246IG93bi5yZXZpc2lvbiArIDF9KTtcbiAgICAgIGF3YWl0IHJlYWQoJ1VQREFURSBAaWQgV0lUSCB7cm9sZTogXCJvd25lclwiLCByZXZpc2lvbjogQHJldmlzaW9ufSBJTiBoYXNDaGF0TWVtYmVyc2hpcCBSRVRVUk4gdHJ1ZScsXG4gICAgICAgIHtpZDogdGFyZ2V0Ll9rZXksIHJldmlzaW9uOiB0YXJnZXQucmV2aXNpb24gKyAxfSk7XG4gICAgICBvd25SZXN1bHQgPSB7Li4ub3duLCByZXZpc2lvbjogb3duLnJldmlzaW9uICsgMSwgcm9sZTogJ2FkbWluJ307XG4gICAgfSBlbHNlIGlmKGFjdGlvbiA9PT0gJ3JvbGUnICYmICdyb2xlJyBpbiBpbnB1dCkge1xuICAgICAgYXdhaXQgcmVhZCgnVVBEQVRFIEBpZCBXSVRIIHtyb2xlOiBAcm9sZSwgcmV2aXNpb246IEByZXZpc2lvbn0gSU4gaGFzQ2hhdE1lbWJlcnNoaXAgUkVUVVJOIHRydWUnLFxuICAgICAgICB7aWQ6IHRhcmdldC5fa2V5LCByZXZpc2lvbjogdGFyZ2V0LnJldmlzaW9uICsgMSwgcm9sZTogaW5wdXQucm9sZX0pO1xuICAgIH0gZWxzZSBpZihsZWF2aW5nKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGFjdGlvbiA9PT0gJ2xlYXZlJyA/ICdsZWZ0JyA6ICdyZW1vdmVkJztcbiAgICAgIGF3YWl0IHJlYWQoYFVQREFURSBAaWQgV0lUSCB7Y3VycmVudEtleTogbnVsbCwgZW5kZWRBdDogQG5vdywgZW5kZWRCeVBlcnNvbmFJZDogQGFjdG9yLFxuICAgICAgICBsZWZ0U2VxdWVuY2U6IEBzZXF1ZW5jZSwgcmV2aXNpb246IEByZXZpc2lvbiwgc3RhdGU6IEBzdGF0ZX0gSU4gaGFzQ2hhdE1lbWJlcnNoaXAgUkVUVVJOIHRydWVgLCB7XG4gICAgICAgIGFjdG9yOiBpZGVudGl0eS5wZXJzb25hSWQsIGlkOiB0YXJnZXQuX2tleSwgbm93OiBEYXRlLm5vdygpLCByZXZpc2lvbjogdGFyZ2V0LnJldmlzaW9uICsgMSxcbiAgICAgICAgc2VxdWVuY2U6IGN1cnJlbnQubGFzdFNlcXVlbmNlLCBzdGF0ZVxuICAgICAgfSk7XG4gICAgICBpZihhY3Rpb24gPT09ICdsZWF2ZScpIHtcbiAgICAgICAgb3duUmVzdWx0ID0gey4uLm93biwgbGVmdFNlcXVlbmNlOiBjdXJyZW50Lmxhc3RTZXF1ZW5jZSwgcmV2aXNpb246IG93bi5yZXZpc2lvbiArIDEsIHN0YXRlfTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlYWQoYEZPUiBlZGdlIElOIGhhc0NvbnZlcnNhdGlvbiBGSUxURVIgZWRnZS5fZnJvbSA9PSBAZnJvbSBBTkQgZWRnZS5fdG8gPT0gQHRvXG4gICAgICAgIExFVCByZW1haW5pbmcgPSBGSVJTVChGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwIEZJTFRFUiBtZW1iZXIuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkXG4gICAgICAgICAgQU5EIG1lbWJlci51c2VySWQgPT0gQHVzZXJJZCBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgICAgIEZJTFRFUiByZW1haW5pbmcgIT0gdHJ1ZSBSRU1PVkUgZWRnZSBJTiBoYXNDb252ZXJzYXRpb24gUkVUVVJOIHRydWVgLCB7XG4gICAgICAgIGNvbnZlcnNhdGlvbklkOiBjdXJyZW50Ll9rZXksIGZyb206IGB1c2Vycy8ke3RhcmdldC51c2VySWR9YCwgdG86IGBjb252ZXJzYXRpb25zLyR7Y3VycmVudC5fa2V5fWAsIHVzZXJJZDogdGFyZ2V0LnVzZXJJZFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmKGxlYXZpbmcgfHwgKGFjdGlvbiA9PT0gJ3JvbGUnICYmICdyb2xlJyBpbiBpbnB1dCAmJiBpbnB1dC5yb2xlID09PSAnbWVtYmVyJykpIHtcbiAgICAgIGF3YWl0IHJlYWQoYEZPUiBpbnZpdGUgSU4gY2hhdEludml0ZXMgRklMVEVSIGludml0ZS5jb252ZXJzYXRpb25JZCA9PSBAY29udmVyc2F0aW9uSWRcbiAgICAgICAgQU5EIGludml0ZS5zdGF0ZSA9PSAncGVuZGluZycgQU5EIChpbnZpdGUuaW52aXRlZEJ5UGVyc29uYUlkID09IEBwZXJzb25hSWQgT1IgQGNsb3NlKVxuICAgICAgICBVUERBVEUgaW52aXRlIFdJVEgge2N1cnJlbnRLZXk6IG51bGwsIHJlc29sdmVkQXQ6IEBub3csIHJldmlzaW9uOiBpbnZpdGUucmV2aXNpb24gKyAxLCBzdGF0ZTogJ3Jldm9rZWQnfVxuICAgICAgICBJTiBjaGF0SW52aXRlcyBSRVRVUk4gdHJ1ZWAsIHtjbG9zZTogbGVhdmluZyAmJiBjdXJyZW50LmFjdGl2ZU1lbWJlckNvdW50ID09PSAxLFxuICAgICAgICBjb252ZXJzYXRpb25JZDogY3VycmVudC5fa2V5LCBub3c6IERhdGUubm93KCksIHBlcnNvbmFJZDogdGFyZ2V0LnBlcnNvbmFJZH0pO1xuICAgIH1cbiAgICBjb25zdCBjb3VudCA9IGN1cnJlbnQuYWN0aXZlTWVtYmVyQ291bnQgLSAobGVhdmluZyA/IDEgOiAwKTtcbiAgICBjb25zdCB1cGRhdGVkID0gYXdhaXQgcmVhZDxDb252ZXJzYXRpb25SZWNvcmQ+KGBVUERBVEUgQGlkIFdJVEgge1xuICAgICAgYWN0aXZlTWVtYmVyQ291bnQ6IEBjb3VudCwgbWVtYmVyc2hpcFJldmlzaW9uOiBAcmV2aXNpb24sIHN0YXRlOiBAc3RhdGV9XG4gICAgICBJTiBjb252ZXJzYXRpb25zIFJFVFVSTiBORVdgLCB7Y291bnQsIGlkOiBjdXJyZW50Ll9rZXksIHJldmlzaW9uOiBjdXJyZW50Lm1lbWJlcnNoaXBSZXZpc2lvbiArIDEsXG4gICAgICBzdGF0ZTogY291bnQgPT09IDAgPyAnY2xvc2VkJyA6IGN1cnJlbnQuc3RhdGV9KTtcbiAgICBpZighdXBkYXRlZCkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcigndW5hdmFpbGFibGUnKTtcbiAgICB9XG4gICAgYXdhaXQgZXZlbnQocmVhZCwgY3VycmVudC5fa2V5LCB0YXJnZXQuZXBvY2gsIHRhcmdldC5fa2V5LCB1cGRhdGVkLm1lbWJlcnNoaXBSZXZpc2lvbik7XG4gICAgY29uc3QgcmVzdWx0ID0gc3VtbWFyeSh1cGRhdGVkLCBvd25SZXN1bHQsIGF1ZGllbmNlKTtcbiAgICBhd2FpdCByZXF1ZXN0LnNhdmUocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbiAgY29uc3QgbGlzdENvbnZlcnNhdGlvbnMgPSAoaW5wdXQ6IENoYXRMaXN0SW5wdXQpOiBQcm9taXNlPHJlYWRvbmx5IENvbnZlcnNhdGlvblN1bW1hcnlbXT4gPT5cbiAgICB0cmFuc2FjdChhc3luYyAocmVhZCkgPT4ge1xuICAgICAgYXdhaXQgYWN0b3IocmVhZCk7XG4gICAgICBjb25zdCBpZHMgPSBhd2FpdCByZWFkPHN0cmluZ1tdPihgUkVUVVJOIChGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwXG4gICAgICBGSUxURVIgbWVtYmVyLnBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBtZW1iZXIudXNlcklkID09IEB1c2VySWQgQU5EIG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJ1xuICAgICAgICBBTkQgbWVtYmVyLmNvbnZlcnNhdGlvbklkID4gQGFmdGVyIFNPUlQgbWVtYmVyLmNvbnZlcnNhdGlvbklkIExJTUlUIEBsaW1pdCBSRVRVUk4gbWVtYmVyLmNvbnZlcnNhdGlvbklkKWAsIHtcbiAgICAgICAgLi4uaWRlbnRpdHksIGFmdGVyOiBpbnB1dC5hZnRlciB8fCAnJywgbGltaXQ6IGlucHV0LmxpbWl0IHx8IDI1XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdHM6IENvbnZlcnNhdGlvblN1bW1hcnlbXSA9IFtdO1xuICAgICAgZm9yKGNvbnN0IGlkIG9mIGlkcyB8fCBbXSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IGFjY2VzcyhyZWFkLCBpZCk7XG4gICAgICAgICAgY29uc3QgY3VycmVudCA9IGF3YWl0IGNvbnZlcnNhdGlvbihyZWFkLCBpZCk7XG4gICAgICAgICAgaWYoY3VycmVudC5raW5kID09PSAnZGlyZWN0Jykge1xuICAgICAgICAgICAgY29uc3QgcGVlciA9IGF3YWl0IHJlYWQ8TWVtYmVyUmVjb3JkPihgRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcCBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBpZFxuICAgICAgICAgICAgQU5EIG1lbWJlci5wZXJzb25hSWQgIT0gQHBlcnNvbmFJZCBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnIExJTUlUIDEgUkVUVVJOIG1lbWJlcmAsIHtpZCwgcGVyc29uYUlkOiBpZGVudGl0eS5wZXJzb25hSWR9KTtcbiAgICAgICAgICAgIGlmKCFwZWVyKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGVkKHJlYWQsIGlkZW50aXR5LCBwZWVyLnBlcnNvbmFJZCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc3VsdHMucHVzaChzdW1tYXJ5KGN1cnJlbnQsIGF3YWl0IG1lbWJlcihyZWFkLCBpZCwgaWRlbnRpdHkucGVyc29uYUlkKSwgYXVkaWVuY2UsIHRydWUpKTtcbiAgICAgICAgfSBjYXRjaChlcnJvcikge1xuICAgICAgICAgIGlmKCEoZXJyb3IgaW5zdGFuY2VvZiBDaGF0RXJyb3IpIHx8IGVycm9yLmNvZGUgIT09ICdmb3JiaWRkZW4nKSB7XG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH0pO1xuICBjb25zdCBsaXN0SW52aXRlcyA9IChpbnB1dDogQ2hhdExpc3RJbnB1dCk6IFByb21pc2U8cmVhZG9ubHkgQ29udmVyc2F0aW9uSW52aXRlW10+ID0+IHRyYW5zYWN0KGFzeW5jIChyZWFkKSA9PiB7XG4gICAgYXdhaXQgYWN0b3IocmVhZCk7XG4gICAgY29uc3QgcmVjb3JkcyA9IGF3YWl0IHJlYWQ8SW52aXRlUmVjb3JkW10+KGBSRVRVUk4gKEZPUiBpbnZpdGUgSU4gY2hhdEludml0ZXNcbiAgICAgIEZJTFRFUiBpbnZpdGUuaW52aXRlZVBlcnNvbmFJZCA9PSBAcGVyc29uYUlkIEFORCBpbnZpdGUuaW52aXRlZVVzZXJJZCA9PSBAdXNlcklkIEFORCBpbnZpdGUuc3RhdGUgPT0gJ3BlbmRpbmcnXG4gICAgICAgIEFORCBpbnZpdGUuZXhwaXJlc0F0ID4gQG5vdyBBTkQgaW52aXRlLl9rZXkgPiBAYWZ0ZXJcbiAgICAgIExFVCBjb252ZXJzYXRpb24gPSBET0NVTUVOVCgnY29udmVyc2F0aW9ucycsIGludml0ZS5jb252ZXJzYXRpb25JZClcbiAgICAgIExFVCBpbnZpdGVyID0gRE9DVU1FTlQoJ3BlcnNvbmFzJywgaW52aXRlLmludml0ZWRCeVBlcnNvbmFJZClcbiAgICAgIExFVCBpbnZpdGVyVXNlciA9IERPQ1VNRU5UKCd1c2VycycsIGludml0ZXIudXNlcklkKVxuICAgICAgTEVUIGludml0ZXJNZW1iZXJzaGlwID0gRklSU1QoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcFxuICAgICAgICBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IGludml0ZS5jb252ZXJzYXRpb25JZCBBTkQgbWVtYmVyLnBlcnNvbmFJZCA9PSBpbnZpdGUuaW52aXRlZEJ5UGVyc29uYUlkXG4gICAgICAgICAgQU5EIG1lbWJlci51c2VySWQgPT0gaW52aXRlci51c2VySWQgQU5EIG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJyBBTkQgbWVtYmVyLnJvbGUgSU4gWydvd25lcicsICdhZG1pbiddXG4gICAgICAgIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgICBMRVQgYmxvY2tlZCA9IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UudHlwZSA9PSAnYmxvY2snXG4gICAgICAgIEFORCAoKGVkZ2UuX2Zyb20gSU4gW0NPTkNBVCgncGVyc29uYXMvJywgQHBlcnNvbmFJZCksIENPTkNBVCgndXNlcnMvJywgQHVzZXJJZCldXG4gICAgICAgICAgQU5EIGVkZ2UuX3RvIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIGludml0ZS5pbnZpdGVkQnlQZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIGludml0ZXIudXNlcklkKV0pXG4gICAgICAgICAgT1IgKGVkZ2UuX3RvIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIEBwZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIEB1c2VySWQpXVxuICAgICAgICAgIEFORCBlZGdlLl9mcm9tIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIGludml0ZS5pbnZpdGVkQnlQZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIGludml0ZXIudXNlcklkKV0pKVxuICAgICAgICBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgRklMVEVSIGNvbnZlcnNhdGlvbi5jaGF0U2NoZW1hVmVyc2lvbiA9PSAxIEFORCBjb252ZXJzYXRpb24uc3RhdGUgSU4gWydhY3RpdmUnLCAnZm9ybWluZyddXG4gICAgICAgIEFORCBpbnZpdGVyICE9IG51bGwgQU5EIGludml0ZXJVc2VyICE9IG51bGwgQU5EIGludml0ZXIuYWN0aXZlICE9IGZhbHNlIEFORCBpbnZpdGVyVXNlci5hY3RpdmUgIT0gZmFsc2VcbiAgICAgICAgQU5EIGludml0ZXJNZW1iZXJzaGlwID09IHRydWUgQU5EIGJsb2NrZWQgIT0gdHJ1ZVxuICAgICAgU09SVCBpbnZpdGUuX2tleSBMSU1JVCBAbGltaXQgUkVUVVJOIGludml0ZSlgLCB7Li4uaWRlbnRpdHksIGFmdGVyOiBpbnB1dC5hZnRlciB8fCAnJywgbGltaXQ6IGlucHV0LmxpbWl0IHx8IDI1LCBub3c6IERhdGUubm93KCl9KTtcbiAgICByZXR1cm4gKHJlY29yZHMgfHwgW10pLm1hcChpbnZpdGVEdG8pO1xuICB9KTtcbiAgY29uc3QgZ2V0UGFydGljaXBhbnRzID0gKGlucHV0OiB7cmVhZG9ubHkgY29udmVyc2F0aW9uSWQ6IHN0cmluZ30pOiBQcm9taXNlPHJlYWRvbmx5IENvbnZlcnNhdGlvbk1lbWJlcnNoaXBbXT4gPT5cbiAgICB0cmFuc2FjdChhc3luYyAocmVhZCkgPT4ge1xuICAgICAgYXdhaXQgYWN0b3IocmVhZCk7XG4gICAgICBhd2FpdCBhY2Nlc3MocmVhZCwgaW5wdXQuY29udmVyc2F0aW9uSWQpO1xuICAgICAgY29uc3QgcmVjb3JkcyA9IGF3YWl0IHJlYWQ8TWVtYmVyUmVjb3JkW10+KGBSRVRVUk4gKEZPUiBtZW1iZXIgSU4gaGFzQ2hhdE1lbWJlcnNoaXBcbiAgICAgICAgRklMVEVSIG1lbWJlci5jb252ZXJzYXRpb25JZCA9PSBAY29udmVyc2F0aW9uSWQgQU5EIG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJ1xuICAgICAgICBMRVQgcGVyc29uYSA9IERPQ1VNRU5UKCdwZXJzb25hcycsIG1lbWJlci5wZXJzb25hSWQpIExFVCB1c2VyID0gRE9DVU1FTlQoJ3VzZXJzJywgbWVtYmVyLnVzZXJJZClcbiAgICAgICAgTEVUIGJsb2NrZWQgPSBGSVJTVChGT1IgZWRnZSBJTiBoYXNDb25uZWN0aW9uIEZJTFRFUiBlZGdlLnR5cGUgPT0gJ2Jsb2NrJ1xuICAgICAgICAgIEFORCAoKGVkZ2UuX2Zyb20gSU4gW0B2aWV3ZXJQZXJzb25hLCBAdmlld2VyVXNlcl1cbiAgICAgICAgICAgIEFORCBlZGdlLl90byBJTiBbQ09OQ0FUKCdwZXJzb25hcy8nLCBtZW1iZXIucGVyc29uYUlkKSwgQ09OQ0FUKCd1c2Vycy8nLCBtZW1iZXIudXNlcklkKV0pXG4gICAgICAgICAgT1IgKGVkZ2UuX3RvIElOIFtAdmlld2VyUGVyc29uYSwgQHZpZXdlclVzZXJdXG4gICAgICAgICAgICBBTkQgZWRnZS5fZnJvbSBJTiBbQ09OQ0FUKCdwZXJzb25hcy8nLCBtZW1iZXIucGVyc29uYUlkKSwgQ09OQ0FUKCd1c2Vycy8nLCBtZW1iZXIudXNlcklkKV0pKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgICAgICBGSUxURVIgcGVyc29uYSAhPSBudWxsIEFORCB1c2VyICE9IG51bGwgQU5EIHBlcnNvbmEuYWN0aXZlICE9IGZhbHNlIEFORCB1c2VyLmFjdGl2ZSAhPSBmYWxzZVxuICAgICAgICAgIEFORCBwZXJzb25hLnVzZXJJZCA9PSBtZW1iZXIudXNlcklkIEFORCBibG9ja2VkICE9IHRydWVcbiAgICAgICAgU09SVCBtZW1iZXIucGVyc29uYUlkIExJTUlUIDI1IFJFVFVSTiBtZW1iZXIpYCwge1xuICAgICAgICBjb252ZXJzYXRpb25JZDogaW5wdXQuY29udmVyc2F0aW9uSWQsIHZpZXdlclBlcnNvbmE6IGBwZXJzb25hcy8ke2lkZW50aXR5LnBlcnNvbmFJZH1gLCB2aWV3ZXJVc2VyOiBgdXNlcnMvJHtpZGVudGl0eS51c2VySWR9YFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gKHJlY29yZHMgfHwgW10pLm1hcChtZW1iZXJzaGlwRHRvKTtcbiAgICB9KTtcbiAgcmV0dXJuIHtcbiAgICBhY2NlcHRJbnZpdGU6IChpbnB1dDogQWNjZXB0SW52aXRlSW5wdXQpID0+IHJlc29sdmVJbnZpdGUoaW5wdXQsIHRydWUpIGFzIFByb21pc2U8Q29udmVyc2F0aW9uU3VtbWFyeT4sXG4gICAgY2hhbmdlTWVtYmVyUm9sZTogKGlucHV0OiBDaGFuZ2VNZW1iZXJSb2xlSW5wdXQpID0+IGNoYW5nZU1lbWJlcnNoaXAoJ3JvbGUnLCBpbnB1dCksXG4gICAgY3JlYXRlR3JvdXAsXG4gICAgZGVjbGluZUludml0ZTogKGlucHV0OiBBY2NlcHRJbnZpdGVJbnB1dCkgPT4gcmVzb2x2ZUludml0ZShpbnB1dCwgZmFsc2UpIGFzIFByb21pc2U8Q29udmVyc2F0aW9uSW52aXRlPixcbiAgICBnZXRPckNyZWF0ZURpcmVjdCwgZ2V0UGFydGljaXBhbnRzLCBpbnZpdGVNZW1iZXIsXG4gICAgbGVhdmVDb252ZXJzYXRpb246IChpbnB1dDogTGVhdmVDb252ZXJzYXRpb25JbnB1dCkgPT4gY2hhbmdlTWVtYmVyc2hpcCgnbGVhdmUnLCBpbnB1dCksXG4gICAgbGlzdENvbnZlcnNhdGlvbnMsIGxpc3RJbnZpdGVzLFxuICAgIHJlbW92ZU1lbWJlcjogKGlucHV0OiBSZW1vdmVNZW1iZXJJbnB1dCkgPT4gY2hhbmdlTWVtYmVyc2hpcCgncmVtb3ZlJywgaW5wdXQpLFxuICAgIHRyYW5zZmVyT3duZXJzaGlwOiAoaW5wdXQ6IFRyYW5zZmVyT3duZXJzaGlwSW5wdXQpID0+IGNoYW5nZU1lbWJlcnNoaXAoJ3RyYW5zZmVyJywgaW5wdXQpXG4gIH07XG59O1xuZXhwb3J0IHR5cGUgQ2hhdFJlcG9zaXRvcnkgPSBSZXR1cm5UeXBlPHR5cGVvZiBjcmVhdGVEdXJhYmxlQ29udmVyc2F0aW9uUmVwb3NpdG9yeT47XG5cbmNvbnN0IHZhbGlkID0gKGNvbmRpdGlvbjogYm9vbGVhbik6IHZvaWQgPT4ge1xuICBpZighY29uZGl0aW9uKSB7XG4gICAgdGhyb3cgbmV3IENoYXRFcnJvcignaW52YWxpZF9yZXF1ZXN0Jyk7XG4gIH1cbn07XG5jb25zdCBtdXRhdGlvbiA9IChpbnB1dDoge3JlYWRvbmx5IGV4cGVjdGVkUmV2aXNpb246IG51bWJlcjsgcmVhZG9ubHkgaWRlbXBvdGVuY3lLZXk6IHN0cmluZ30pOiB2b2lkID0+IHtcbiAgdmFsaWQoQm9vbGVhbihpbnB1dCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5pZGVtcG90ZW5jeUtleSlcbiAgICAmJiBOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5leHBlY3RlZFJldmlzaW9uKSAmJiBpbnB1dC5leHBlY3RlZFJldmlzaW9uID4gMCk7XG59O1xuY29uc3QgY29udmVyc2F0aW9uTXV0YXRpb24gPSAoaW5wdXQ6IExlYXZlQ29udmVyc2F0aW9uSW5wdXQpOiB2b2lkID0+IHtcbiAgbXV0YXRpb24oaW5wdXQpO1xuICB2YWxpZChpc0NoYXRJZGVudGlmaWVyKGlucHV0LmNvbnZlcnNhdGlvbklkKSk7XG59O1xuY29uc3QgdGFyZ2V0ZWRNdXRhdGlvbiA9IChpbnB1dDogUmVtb3ZlTWVtYmVySW5wdXQpOiB2b2lkID0+IHtcbiAgY29udmVyc2F0aW9uTXV0YXRpb24oaW5wdXQpO1xuICB2YWxpZChpc0NoYXRJZGVudGlmaWVyKGlucHV0LnBlcnNvbmFJZCkpO1xufTtcbmNvbnN0IGxpc3QgPSAoaW5wdXQ6IENoYXRMaXN0SW5wdXQpOiB2b2lkID0+IHZhbGlkKEJvb2xlYW4oaW5wdXQpXG4gICYmIChpbnB1dC5saW1pdCA9PT0gdW5kZWZpbmVkIHx8IChOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5saW1pdCkgJiYgaW5wdXQubGltaXQgPiAwICYmIGlucHV0LmxpbWl0IDw9IDUwKSlcbiAgJiYgKGlucHV0LmFmdGVyID09PSB1bmRlZmluZWQgfHwgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5hZnRlcikpKTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZUR1cmFibGVDb252ZXJzYXRpb25BY3Rpb25zID0gKFxuICBpZGVudGl0eTogQ2hhdElkZW50aXR5LCByZXBvc2l0b3J5OiBDaGF0UmVwb3NpdG9yeVxuKSA9PiB7XG4gIGlmKCFpZGVudGl0eSB8fCAhaXNDaGF0SWRlbnRpZmllcihpZGVudGl0eS5wZXJzb25hSWQpIHx8ICFpc0NoYXRJZGVudGlmaWVyKGlkZW50aXR5LnVzZXJJZCkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGFjY2VwdEludml0ZTogYXN5bmMgKGlucHV0OiBBY2NlcHRJbnZpdGVJbnB1dCkgPT4ge1xuICAgICAgbXV0YXRpb24oaW5wdXQpO1xuICAgICAgdmFsaWQoaXNDaGF0SWRlbnRpZmllcihpbnB1dC5pbnZpdGVJZCkpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuYWNjZXB0SW52aXRlKGlucHV0KTtcbiAgICB9LFxuICAgIGNoYW5nZU1lbWJlclJvbGU6IGFzeW5jIChpbnB1dDogQ2hhbmdlTWVtYmVyUm9sZUlucHV0KSA9PiB7XG4gICAgICB0YXJnZXRlZE11dGF0aW9uKGlucHV0KTtcbiAgICAgIHZhbGlkKFsnYWRtaW4nLCAnbWVtYmVyJ10uaW5jbHVkZXMoaW5wdXQucm9sZSkpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuY2hhbmdlTWVtYmVyUm9sZShpbnB1dCk7XG4gICAgfSxcbiAgICBjcmVhdGVHcm91cDogYXN5bmMgKGlucHV0OiBDcmVhdGVHcm91cElucHV0KSA9PiB7XG4gICAgICB2YWxpZChCb29sZWFuKGlucHV0KSAmJiBpc0NoYXRJZGVudGlmaWVyKGlucHV0LmlkZW1wb3RlbmN5S2V5KSAmJiB0eXBlb2YgaW5wdXQubmFtZSA9PT0gJ3N0cmluZydcbiAgICAgICAgJiYgaW5wdXQubmFtZS50cmltKCkubGVuZ3RoID4gMCAmJiBpbnB1dC5uYW1lLmxlbmd0aCA8PSAyMDBcbiAgICAgICAgJiYgQXJyYXkuaXNBcnJheShpbnB1dC5tZW1iZXJQZXJzb25hSWRzKVxuICAgICAgICAmJiBpbnB1dC5tZW1iZXJQZXJzb25hSWRzLmxlbmd0aCA+PSAyICYmIGlucHV0Lm1lbWJlclBlcnNvbmFJZHMubGVuZ3RoIDw9IDI0XG4gICAgICAgICYmIGlucHV0Lm1lbWJlclBlcnNvbmFJZHMuZXZlcnkoKGlkKSA9PiBpc0NoYXRJZGVudGlmaWVyKGlkKSAmJiBpZCAhPT0gaWRlbnRpdHkucGVyc29uYUlkKVxuICAgICAgICAmJiBuZXcgU2V0KGlucHV0Lm1lbWJlclBlcnNvbmFJZHMpLnNpemUgPT09IGlucHV0Lm1lbWJlclBlcnNvbmFJZHMubGVuZ3RoKTtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5LmNyZWF0ZUdyb3VwKGlucHV0KTtcbiAgICB9LFxuICAgIGRlY2xpbmVJbnZpdGU6IGFzeW5jIChpbnB1dDogQWNjZXB0SW52aXRlSW5wdXQpID0+IHtcbiAgICAgIG11dGF0aW9uKGlucHV0KTtcbiAgICAgIHZhbGlkKGlzQ2hhdElkZW50aWZpZXIoaW5wdXQuaW52aXRlSWQpKTtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5LmRlY2xpbmVJbnZpdGUoaW5wdXQpO1xuICAgIH0sXG4gICAgZ2V0T3JDcmVhdGVEaXJlY3Q6IGFzeW5jIChpbnB1dDogQ3JlYXRlRGlyZWN0SW5wdXQpID0+IHtcbiAgICAgIHZhbGlkKEJvb2xlYW4oaW5wdXQpICYmIGlzQ2hhdElkZW50aWZpZXIoaW5wdXQucGFydGljaXBhbnRQZXJzb25hSWQpXG4gICAgICAgICYmIGlucHV0LnBhcnRpY2lwYW50UGVyc29uYUlkICE9PSBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0T3JDcmVhdGVEaXJlY3QoaW5wdXQpO1xuICAgIH0sXG4gICAgZ2V0UGFydGljaXBhbnRzOiBhc3luYyAoaW5wdXQ6IHtyZWFkb25seSBjb252ZXJzYXRpb25JZDogc3RyaW5nfSkgPT4ge1xuICAgICAgdmFsaWQoQm9vbGVhbihpbnB1dCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5jb252ZXJzYXRpb25JZCkpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkuZ2V0UGFydGljaXBhbnRzKGlucHV0KTtcbiAgICB9LFxuICAgIGludml0ZU1lbWJlcjogYXN5bmMgKGlucHV0OiBJbnZpdGVNZW1iZXJJbnB1dCkgPT4ge1xuICAgICAgdGFyZ2V0ZWRNdXRhdGlvbihpbnB1dCk7XG4gICAgICB2YWxpZChpbnB1dC5wZXJzb25hSWQgIT09IGlkZW50aXR5LnBlcnNvbmFJZCk7XG4gICAgICByZXR1cm4gcmVwb3NpdG9yeS5pbnZpdGVNZW1iZXIoaW5wdXQpO1xuICAgIH0sXG4gICAgbGVhdmVDb252ZXJzYXRpb246IGFzeW5jIChpbnB1dDogTGVhdmVDb252ZXJzYXRpb25JbnB1dCkgPT4ge1xuICAgICAgY29udmVyc2F0aW9uTXV0YXRpb24oaW5wdXQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkubGVhdmVDb252ZXJzYXRpb24oaW5wdXQpO1xuICAgIH0sXG4gICAgbGlzdENvbnZlcnNhdGlvbnM6IGFzeW5jIChpbnB1dDogQ2hhdExpc3RJbnB1dCA9IHt9KSA9PiB7XG4gICAgICBsaXN0KGlucHV0KTtcbiAgICAgIHJldHVybiByZXBvc2l0b3J5Lmxpc3RDb252ZXJzYXRpb25zKGlucHV0KTtcbiAgICB9LFxuICAgIGxpc3RJbnZpdGVzOiBhc3luYyAoaW5wdXQ6IENoYXRMaXN0SW5wdXQgPSB7fSkgPT4ge1xuICAgICAgbGlzdChpbnB1dCk7XG4gICAgICByZXR1cm4gcmVwb3NpdG9yeS5saXN0SW52aXRlcyhpbnB1dCk7XG4gICAgfSxcbiAgICByZW1vdmVNZW1iZXI6IGFzeW5jIChpbnB1dDogUmVtb3ZlTWVtYmVySW5wdXQpID0+IHtcbiAgICAgIHRhcmdldGVkTXV0YXRpb24oaW5wdXQpO1xuICAgICAgdmFsaWQoaW5wdXQucGVyc29uYUlkICE9PSBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkucmVtb3ZlTWVtYmVyKGlucHV0KTtcbiAgICB9LFxuICAgIHRyYW5zZmVyT3duZXJzaGlwOiBhc3luYyAoaW5wdXQ6IFRyYW5zZmVyT3duZXJzaGlwSW5wdXQpID0+IHtcbiAgICAgIHRhcmdldGVkTXV0YXRpb24oaW5wdXQpO1xuICAgICAgdmFsaWQoaW5wdXQucGVyc29uYUlkICE9PSBpZGVudGl0eS5wZXJzb25hSWQpO1xuICAgICAgcmV0dXJuIHJlcG9zaXRvcnkudHJhbnNmZXJPd25lcnNoaXAoaW5wdXQpO1xuICAgIH1cbiAgfTtcbn07XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInJhbmRvbVVVSUQiLCJDaGF0RXJyb3IiLCJhcHBlbmRDaGF0RXZlbnQiLCJjcmVhdGVNZW1iZXJzaGlwQXV0aG9yaXplciIsImlzQ2hhdElkZW50aWZpZXIiLCJjcmVhdGVEdXJhYmxlVHJhbnNhY3Rpb24iLCJoYXNoIiwiaW5wdXQiLCJ1cGRhdGUiLCJKU09OIiwic3RyaW5naWZ5IiwiZGlnZXN0IiwiaW52aXRlTWlsbGlzZWNvbmRzIiwibWVtYmVyc2hpcER0byIsInJlY29yZCIsImNvbnZlcnNhdGlvbklkIiwiZXBvY2giLCJqb2luU2VxdWVuY2UiLCJsZWZ0U2VxdWVuY2UiLCJwZXJzb25hSWQiLCJyZXZpc2lvbiIsInJvbGUiLCJzdGF0ZSIsImludml0ZUR0byIsImV4cGlyZXNBdCIsImludml0ZUlkIiwiX2tleSIsImludml0ZWRCeVBlcnNvbmFJZCIsImNyZWF0ZUR1cmFibGVDb252ZXJzYXRpb25SZXBvc2l0b3J5IiwiY29udGV4dCIsImlkZW50aXR5Iiwib3B0aW9ucyIsImF1ZGllbmNlIiwidHJhbnNhY3QiLCJleGNsdXNpdmUiLCJyZWFkIiwicmVhZENvbGxlY3Rpb25zIiwicXVlcnkiLCJzdW1tYXJ5IiwiY29udmVyc2F0aW9uIiwibWVtYmVyIiwiaW5jbHVkZU5hbWUiLCJhY3RpdmVNZW1iZXJDb3VudCIsImtpbmQiLCJtZW1iZXJzaGlwIiwibWVtYmVyc2hpcFJldmlzaW9uIiwibmFtZSIsInByb2plY3ROYW1lIiwidW5kZWZpbmVkIiwiYWN0b3IiLCJhbGxvd2VkIiwiYWR1bHQiLCJ3aG8iLCJhdXRob3JpemVJZGVudGl0eSIsImNvbm5lY3RlZCIsImZyb20iLCJ0YXJnZXQiLCJhY3RvclVzZXIiLCJ1c2VySWQiLCJmcm9tVXNlciIsInRvIiwiaWQiLCJ2YWx1ZSIsImNoYXRTY2hlbWFWZXJzaW9uIiwiYWNjZXNzIiwicHVycG9zZSIsImNoZWNrUmV2aXNpb24iLCJlbnRyeSIsImV4cGVjdGVkIiwiZXZlbnQiLCJyZXNvdXJjZUlkIiwiYWN0b3JQZXJzb25hSWQiLCJtZW1iZXJzaGlwRXBvY2giLCJyZWNlaXB0IiwiYWN0aW9uIiwia2V5IiwiaWRlbXBvdGVuY3lLZXkiLCJwYXlsb2FkSGFzaCIsInByaW9yIiwicmVzdWx0Iiwic2F2ZSIsImFkZGVkIiwiRGF0ZSIsIm5vdyIsIm93bmVyVXNlcklkIiwicmF0ZUxpbWl0IiwiTWF0aCIsImZsb29yIiwiYWRkTWVtYmVyIiwiZXZlbnRTZXF1ZW5jZSIsIl9mcm9tIiwiX3RvIiwiYWNjZXB0ZWRBdCIsImN1cnJlbnRLZXkiLCJqb2luRXZlbnRTZXF1ZW5jZSIsImFkZEludml0ZSIsImludml0ZWVQZXJzb25hSWQiLCJpbnZpdGVlVXNlcklkIiwiY3JlYXRlZEF0IiwiZXhwaXJlSW52aXRlcyIsImdldE9yQ3JlYXRlRGlyZWN0IiwicGFydGljaXBhbnRQZXJzb25hSWQiLCJwYWlyIiwic29ydCIsImV4aXN0aW5nIiwibGFzdFNlcXVlbmNlIiwiY3JlYXRlZEJ5UGVyc29uYUlkIiwiZGlyZWN0UGFpcktleSIsImlzRGlyZWN0Iiwib3duIiwiY3JlYXRlR3JvdXAiLCJyZXF1ZXN0IiwidGFyZ2V0cyIsIm1lbWJlclBlcnNvbmFJZHMiLCJwdXNoIiwiY29udGVudFZlcnNpb24iLCJuYW1lQ29udGVudFZlcnNpb24iLCJuYW1lRGVjaXNpb24iLCJjbGFzc2lmeU5hbWUiLCJpbnZpdGVNZW1iZXIiLCJleHBlY3RlZFJldmlzaW9uIiwiY291bnRzIiwiYWN0aXZlIiwidG90YWwiLCJyZXNvbHZlSW52aXRlIiwiYWNjZXB0IiwiaW52aXRlIiwiY3VycmVudCIsImludml0ZXIiLCJpbmNsdWRlcyIsInVwZGF0ZWQiLCJjb3VudCIsImNoYW5nZU1lbWJlcnNoaXAiLCJvd25BY2Nlc3MiLCJ0YXJnZXRQZXJzb25hSWQiLCJsZWF2aW5nIiwib3duUmVzdWx0Iiwic2VxdWVuY2UiLCJjbG9zZSIsImxpc3RDb252ZXJzYXRpb25zIiwiaWRzIiwiYWZ0ZXIiLCJsaW1pdCIsInJlc3VsdHMiLCJwZWVyIiwiZXJyb3IiLCJjb2RlIiwibGlzdEludml0ZXMiLCJyZWNvcmRzIiwibWFwIiwiZ2V0UGFydGljaXBhbnRzIiwidmlld2VyUGVyc29uYSIsInZpZXdlclVzZXIiLCJhY2NlcHRJbnZpdGUiLCJjaGFuZ2VNZW1iZXJSb2xlIiwiZGVjbGluZUludml0ZSIsImxlYXZlQ29udmVyc2F0aW9uIiwicmVtb3ZlTWVtYmVyIiwidHJhbnNmZXJPd25lcnNoaXAiLCJ2YWxpZCIsImNvbmRpdGlvbiIsIm11dGF0aW9uIiwiQm9vbGVhbiIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJjb252ZXJzYXRpb25NdXRhdGlvbiIsInRhcmdldGVkTXV0YXRpb24iLCJsaXN0IiwiY3JlYXRlRHVyYWJsZUNvbnZlcnNhdGlvbkFjdGlvbnMiLCJyZXBvc2l0b3J5IiwidHJpbSIsImxlbmd0aCIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwiU2V0Iiwic2l6ZSJdLCJtYXBwaW5ncyI6IkFBQUEsd0dBQXdHLEdBQ3hHLFNBQVFBLFVBQVUsRUFBRUMsVUFBVSxRQUFPLGNBQWM7QUFFbkQsU0FBUUMsU0FBUyxRQUFPLGNBQWM7QUFDdEMsU0FBUUMsZUFBZSxRQUFPLGNBQWM7QUFDNUMsU0FBUUMsMEJBQTBCLEVBQUVDLGdCQUFnQixRQUFPLGtCQUFrQjtBQUM3RSxTQUFRQyx3QkFBd0IsUUFBTyxtQkFBbUI7QUFtQzFE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
|
|
@@ -8,4 +8,4 @@ export class DurableChatError extends Error {
|
|
|
8
8
|
}
|
|
9
9
|
export { DurableChatError as ChatError };
|
|
10
10
|
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvZXJyb3JzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIENoYXRFcnJvckNvZGUgPSAnY29uZmxpY3QnIHwgJ2ZvcmJpZGRlbicgfCAnaW52YWxpZF9yZXF1ZXN0JyB8ICdyYXRlX2xpbWl0ZWQnIHwgJ3VuYXZhaWxhYmxlJztcblxuZXhwb3J0IGNsYXNzIER1cmFibGVDaGF0RXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIHJlYWRvbmx5IGNvZGU6IENoYXRFcnJvckNvZGU7XG5cbiAgY29uc3RydWN0b3IoY29kZTogQ2hhdEVycm9yQ29kZSkge1xuICAgIHN1cGVyKGNvZGUpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5uYW1lID0gJ0NoYXRFcnJvcic7XG4gIH1cbn1cblxuZXhwb3J0IHtEdXJhYmxlQ2hhdEVycm9yIGFzIENoYXRFcnJvcn07XG4iXSwibmFtZXMiOlsiRHVyYWJsZUNoYXRFcnJvciIsIkVycm9yIiwiY29kZSIsIm5hbWUiLCJDaGF0RXJyb3IiXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sTUFBTUEseUJBQXlCQztJQUMzQkMsS0FBb0I7SUFFN0IsWUFBWUEsSUFBbUIsQ0FBRTtRQUMvQixLQUFLLENBQUNBO1FBQ04sSUFBSSxDQUFDQSxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUc7SUFDZDtBQUNGO0FBRUEsU0FBUUgsb0JBQW9CSSxTQUFTLEdBQUUifQ==
|
|
@@ -47,4 +47,4 @@ import { isChatIdentifier } from './membership.js';
|
|
|
47
47
|
return record;
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvZXZlbnRzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cmFuZG9tVVVJRH0gZnJvbSAnbm9kZTpjcnlwdG8nO1xuXG5pbXBvcnQge0NoYXRFcnJvcn0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHtpc0NoYXRJZGVudGlmaWVyfSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuXG5pbXBvcnQgdHlwZSB7Q2hhdFF1ZXJ5fSBmcm9tICcuL21lbWJlcnNoaXAuanMnO1xuaW1wb3J0IHR5cGUge0NoYXRFdmVudH0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwZW5kQ2hhdEV2ZW50SW5wdXQge1xuICByZWFkb25seSBhY3RvclBlcnNvbmFJZDogc3RyaW5nO1xuICByZWFkb25seSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICByZWFkb25seSBraW5kOiBDaGF0RXZlbnRbJ2tpbmQnXTtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcEVwb2NoPzogc3RyaW5nO1xuICByZWFkb25seSByZXNvdXJjZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJldmlzaW9uOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVkQ2hhdEV2ZW50IGV4dGVuZHMgQ2hhdEV2ZW50IHtcbiAgcmVhZG9ubHkgX2tleTogc3RyaW5nO1xuICByZWFkb25seSBhY3RvclBlcnNvbmFJZDogc3RyaW5nO1xuICByZWFkb25seSBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgbGVhc2VVbnRpbDogbnVtYmVyO1xuICByZWFkb25seSBtZW1iZXJzaGlwRXBvY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG5leHRBdHRlbXB0QXQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgc3RhdHVzOiAncGVuZGluZyc7XG4gIHJlYWRvbmx5IHR5cGU6IENoYXRFdmVudFsna2luZCddO1xufVxuXG4vKiogUmVxdWlyZXMgdGhlIGNhbGxlcidzIGV4Y2x1c2l2ZSBjb252ZXJzYXRpb25zL2NoYXRPdXRib3ggbG9ja3M7IG5ldmVyIGNvbW1pdHMgaW5kZXBlbmRlbnRseS4gKi9cbmV4cG9ydCBjb25zdCBhcHBlbmRDaGF0RXZlbnQgPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBpbnB1dDogQXBwZW5kQ2hhdEV2ZW50SW5wdXQpOiBQcm9taXNlPFN0b3JlZENoYXRFdmVudD4gPT4ge1xuICBpZighaW5wdXQgfHwgIWlzQ2hhdElkZW50aWZpZXIoaW5wdXQuYWN0b3JQZXJzb25hSWQpIHx8ICFpc0NoYXRJZGVudGlmaWVyKGlucHV0LmNvbnZlcnNhdGlvbklkKVxuICAgIHx8ICFpc0NoYXRJZGVudGlmaWVyKGlucHV0LnJlc291cmNlSWQpIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5yZXZpc2lvbikgfHwgaW5wdXQucmV2aXNpb24gPCAxXG4gICAgfHwgKGlucHV0Lm1lbWJlcnNoaXBFcG9jaCAhPT0gdW5kZWZpbmVkICYmICFpc0NoYXRJZGVudGlmaWVyKGlucHV0Lm1lbWJlcnNoaXBFcG9jaCkpXG4gICAgfHwgIVsnbWVtYmVyc2hpcC5jaGFuZ2VkJywgJ21lc3NhZ2UuY2hhbmdlZCcsICdyZWNlaXB0LmNoYW5nZWQnXS5pbmNsdWRlcyhpbnB1dC5raW5kKSkge1xuICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ludmFsaWRfcmVxdWVzdCcpO1xuICB9XG4gIGNvbnN0IHNlcXVlbmNlID0gYXdhaXQgcmVhZDxudW1iZXI+KGBMRVQgY29udmVyc2F0aW9uID0gRE9DVU1FTlQoJ2NvbnZlcnNhdGlvbnMnLCBAaWQpXG4gICAgRklMVEVSIGNvbnZlcnNhdGlvbiAhPSBudWxsIEFORCBjb252ZXJzYXRpb24uY2hhdFNjaGVtYVZlcnNpb24gPT0gMVxuICAgICAgQU5EIChjb252ZXJzYXRpb24ubGFzdEV2ZW50U2VxdWVuY2UgPT0gbnVsbCBPUlxuICAgICAgICAoSVNfTlVNQkVSKGNvbnZlcnNhdGlvbi5sYXN0RXZlbnRTZXF1ZW5jZSkgQU5EIGNvbnZlcnNhdGlvbi5sYXN0RXZlbnRTZXF1ZW5jZSA+PSAwXG4gICAgICAgICAgQU5EIEZMT09SKGNvbnZlcnNhdGlvbi5sYXN0RXZlbnRTZXF1ZW5jZSkgPT0gY29udmVyc2F0aW9uLmxhc3RFdmVudFNlcXVlbmNlXG4gICAgICAgICAgQU5EIGNvbnZlcnNhdGlvbi5sYXN0RXZlbnRTZXF1ZW5jZSA8IDkwMDcxOTkyNTQ3NDA5OTEpKVxuICAgIFVQREFURSBAaWQgV0lUSCB7bGFzdEV2ZW50U2VxdWVuY2U6IChjb252ZXJzYXRpb24ubGFzdEV2ZW50U2VxdWVuY2UgPT0gbnVsbCA/IDAgOiBjb252ZXJzYXRpb24ubGFzdEV2ZW50U2VxdWVuY2UpICsgMX1cbiAgICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FVy5sYXN0RXZlbnRTZXF1ZW5jZWAsIHtpZDogaW5wdXQuY29udmVyc2F0aW9uSWR9KTtcbiAgaWYoIU51bWJlci5pc1NhZmVJbnRlZ2VyKHNlcXVlbmNlKSB8fCBOdW1iZXIoc2VxdWVuY2UpIDwgMSkge1xuICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gIH1cbiAgY29uc3QgaWQgPSByYW5kb21VVUlEKCk7XG4gIGNvbnN0IHJlY29yZDogU3RvcmVkQ2hhdEV2ZW50ID0ge1xuICAgIF9rZXk6IGlkLCBhY3RvclBlcnNvbmFJZDogaW5wdXQuYWN0b3JQZXJzb25hSWQsIGNvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCwgY3JlYXRlZEF0OiBEYXRlLm5vdygpLFxuICAgIGV2ZW50SWQ6IGlkLCBldmVudFNlcXVlbmNlOiBzZXF1ZW5jZSEsIGtpbmQ6IGlucHV0LmtpbmQsIGxlYXNlVW50aWw6IDAsXG4gICAgbWVtYmVyc2hpcEVwb2NoOiBpbnB1dC5tZW1iZXJzaGlwRXBvY2gsIG5leHRBdHRlbXB0QXQ6IDAsIHJlc291cmNlSWQ6IGlucHV0LnJlc291cmNlSWQsXG4gICAgcmV2aXNpb246IGlucHV0LnJldmlzaW9uLCBzdGF0dXM6ICdwZW5kaW5nJywgdHlwZTogaW5wdXQua2luZFxuICB9O1xuICBpZihhd2FpdCByZWFkPGJvb2xlYW4+KCdJTlNFUlQgQHJlY29yZCBJTiBjaGF0T3V0Ym94IFJFVFVSTiB0cnVlJywge3JlY29yZH0pICE9PSB0cnVlKSB7XG4gICAgdGhyb3cgbmV3IENoYXRFcnJvcigndW5hdmFpbGFibGUnKTtcbiAgfVxuICByZXR1cm4gcmVjb3JkO1xufTtcbiJdLCJuYW1lcyI6WyJyYW5kb21VVUlEIiwiQ2hhdEVycm9yIiwiaXNDaGF0SWRlbnRpZmllciIsImFwcGVuZENoYXRFdmVudCIsInJlYWQiLCJpbnB1dCIsImFjdG9yUGVyc29uYUlkIiwiY29udmVyc2F0aW9uSWQiLCJyZXNvdXJjZUlkIiwiTnVtYmVyIiwiaXNTYWZlSW50ZWdlciIsInJldmlzaW9uIiwibWVtYmVyc2hpcEVwb2NoIiwidW5kZWZpbmVkIiwiaW5jbHVkZXMiLCJraW5kIiwic2VxdWVuY2UiLCJpZCIsInJlY29yZCIsIl9rZXkiLCJjcmVhdGVkQXQiLCJEYXRlIiwibm93IiwiZXZlbnRJZCIsImV2ZW50U2VxdWVuY2UiLCJsZWFzZVVudGlsIiwibmV4dEF0dGVtcHRBdCIsInN0YXR1cyIsInR5cGUiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVFBLFVBQVUsUUFBTyxjQUFjO0FBRXZDLFNBQVFDLFNBQVMsUUFBTyxjQUFjO0FBQ3RDLFNBQVFDLGdCQUFnQixRQUFPLGtCQUFrQjtBQXlCakQsaUdBQWlHLEdBQ2pHLE9BQU8sTUFBTUMsa0JBQWtCLE9BQU9DLE1BQWlCQztJQUNyRCxJQUFHLENBQUNBLFNBQVMsQ0FBQ0gsaUJBQWlCRyxNQUFNQyxjQUFjLEtBQUssQ0FBQ0osaUJBQWlCRyxNQUFNRSxjQUFjLEtBQ3pGLENBQUNMLGlCQUFpQkcsTUFBTUcsVUFBVSxLQUFLLENBQUNDLE9BQU9DLGFBQWEsQ0FBQ0wsTUFBTU0sUUFBUSxLQUFLTixNQUFNTSxRQUFRLEdBQUcsS0FDaEdOLE1BQU1PLGVBQWUsS0FBS0MsYUFBYSxDQUFDWCxpQkFBaUJHLE1BQU1PLGVBQWUsS0FDL0UsQ0FBQztRQUFDO1FBQXNCO1FBQW1CO0tBQWtCLENBQUNFLFFBQVEsQ0FBQ1QsTUFBTVUsSUFBSSxHQUFHO1FBQ3ZGLE1BQU0sSUFBSWQsVUFBVTtJQUN0QjtJQUNBLE1BQU1lLFdBQVcsTUFBTVosS0FBYSxDQUFDOzs7Ozs7O21EQU9ZLENBQUMsRUFBRTtRQUFDYSxJQUFJWixNQUFNRSxjQUFjO0lBQUE7SUFDN0UsSUFBRyxDQUFDRSxPQUFPQyxhQUFhLENBQUNNLGFBQWFQLE9BQU9PLFlBQVksR0FBRztRQUMxRCxNQUFNLElBQUlmLFVBQVU7SUFDdEI7SUFDQSxNQUFNZ0IsS0FBS2pCO0lBQ1gsTUFBTWtCLFNBQTBCO1FBQzlCQyxNQUFNRjtRQUFJWCxnQkFBZ0JELE1BQU1DLGNBQWM7UUFBRUMsZ0JBQWdCRixNQUFNRSxjQUFjO1FBQUVhLFdBQVdDLEtBQUtDLEdBQUc7UUFDekdDLFNBQVNOO1FBQUlPLGVBQWVSO1FBQVdELE1BQU1WLE1BQU1VLElBQUk7UUFBRVUsWUFBWTtRQUNyRWIsaUJBQWlCUCxNQUFNTyxlQUFlO1FBQUVjLGVBQWU7UUFBR2xCLFlBQVlILE1BQU1HLFVBQVU7UUFDdEZHLFVBQVVOLE1BQU1NLFFBQVE7UUFBRWdCLFFBQVE7UUFBV0MsTUFBTXZCLE1BQU1VLElBQUk7SUFDL0Q7SUFDQSxJQUFHLE1BQU1YLEtBQWMsNENBQTRDO1FBQUNjO0lBQU0sT0FBTyxNQUFNO1FBQ3JGLE1BQU0sSUFBSWpCLFVBQVU7SUFDdEI7SUFDQSxPQUFPaUI7QUFDVCxFQUFFIn0=
|
package/lib/durableChat/index.js
CHANGED
|
@@ -7,4 +7,4 @@ export * from './types.js';
|
|
|
7
7
|
export * from './messages.js';
|
|
8
8
|
export * from './messageTypes.js';
|
|
9
9
|
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb252ZXJzYXRpb25zLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZXJyb3JzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vZXZlbnRzLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vbWVtYmVyc2hpcC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3RyYW5zYWN0aW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMuanMnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXNzYWdlcy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VUeXBlcy5qcyc7XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxxQkFBcUI7QUFDbkMsY0FBYyxjQUFjO0FBQzVCLGNBQWMsY0FBYztBQUM1QixjQUFjLGtCQUFrQjtBQUNoQyxjQUFjLG1CQUFtQjtBQUNqQyxjQUFjLGFBQWE7QUFDM0IsY0FBYyxnQkFBZ0I7QUFDOUIsY0FBYyxvQkFBb0IifQ==
|
|
@@ -82,4 +82,4 @@ export const createMembershipAuthorizer = (read)=>async (identity, input)=>{
|
|
|
82
82
|
};
|
|
83
83
|
export const authorizeConversationAccess = (context, identity, input)=>createMembershipAuthorizer(createDurableQuery(context))(identity, input);
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvbWVtYmVyc2hpcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYXRFcnJvcn0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHtjcmVhdGVEdXJhYmxlUXVlcnl9IGZyb20gJy4vdHJhbnNhY3Rpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udmVyc2F0aW9uS2luZCwgQ29udmVyc2F0aW9uTWVtYmVyc2hpcCwgQ29udmVyc2F0aW9uU3RhdGV9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRJZGVudGl0eSB7XG4gIHJlYWRvbmx5IHBlcnNvbmFJZDogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW1iZXJzaGlwQWNjZXNzSW5wdXQge1xuICByZWFkb25seSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICByZWFkb25seSBtZW1iZXJzaGlwRXBvY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2VTZXF1ZW5jZT86IG51bWJlcjtcbiAgcmVhZG9ubHkgcHVycG9zZTogJ2hpc3RvcnknIHwgJ2ludml0ZScgfCAncGFydGljaXBhbnRzJyB8ICdyZXBvcnQnIHwgJ3NlbmQnIHwgJ3NvY2tldCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplZE1lbWJlcnNoaXAgZXh0ZW5kcyBDb252ZXJzYXRpb25NZW1iZXJzaGlwIHtcbiAgcmVhZG9ubHkgYWN0aXZlTWVtYmVyQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29udmVyc2F0aW9uU3RhdGU6IENvbnZlcnNhdGlvblN0YXRlO1xuICByZWFkb25seSBraW5kOiBDb252ZXJzYXRpb25LaW5kO1xuICByZWFkb25seSBsYXN0U2VxdWVuY2U6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcFJldmlzaW9uOiBudW1iZXI7XG59XG5cbi8qKiBJbmplY3QgdGhlIHRyYW5zYWN0aW9uJ3MgcXVlcnkgYWRhcHRlciB3aGVuIHRoaXMgY2hlY2sgZ3VhcmRzIGEgd3JpdGUuICovXG5leHBvcnQgdHlwZSBDaGF0UXVlcnkgPSA8VD4ocXVlcnk6IHN0cmluZywgYmluZFZhcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXNDaGF0SWRlbnRpZmllciA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyA9PlxuICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eW2EtekEtWjAtOV8tXXsxLDEyOH0kLy50ZXN0KHZhbHVlKTtcblxuY29uc3QgcHVycG9zZXM6IHJlYWRvbmx5IE1lbWJlcnNoaXBBY2Nlc3NJbnB1dFsncHVycG9zZSddW10gPSBbJ2hpc3RvcnknLCAnaW52aXRlJywgJ3BhcnRpY2lwYW50cycsICdyZXBvcnQnLCAnc2VuZCcsICdzb2NrZXQnXTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lbWJlcnNoaXBBdXRob3JpemVyID0gKHJlYWQ6IENoYXRRdWVyeSkgPT4gYXN5bmMgKFxuICBpZGVudGl0eTogQ2hhdElkZW50aXR5LCBpbnB1dDogTWVtYmVyc2hpcEFjY2Vzc0lucHV0XG4pOiBQcm9taXNlPEF1dGhvcml6ZWRNZW1iZXJzaGlwPiA9PiB7XG4gIGlmKCFpZGVudGl0eSB8fCAhaXNDaGF0SWRlbnRpZmllcihpZGVudGl0eS51c2VySWQpIHx8ICFpc0NoYXRJZGVudGlmaWVyKGlkZW50aXR5LnBlcnNvbmFJZCkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICBpZighaW5wdXQgfHwgIWlzQ2hhdElkZW50aWZpZXIoaW5wdXQuY29udmVyc2F0aW9uSWQpIHx8ICFwdXJwb3Nlcy5pbmNsdWRlcyhpbnB1dC5wdXJwb3NlKVxuICAgIHx8IChpbnB1dC5tZW1iZXJzaGlwRXBvY2ggIT09IHVuZGVmaW5lZCAmJiAhaXNDaGF0SWRlbnRpZmllcihpbnB1dC5tZW1iZXJzaGlwRXBvY2gpKVxuICAgIHx8IChpbnB1dC5tZXNzYWdlU2VxdWVuY2UgIT09IHVuZGVmaW5lZFxuICAgICAgJiYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5tZXNzYWdlU2VxdWVuY2UpIHx8IGlucHV0Lm1lc3NhZ2VTZXF1ZW5jZSA8IDEpKVxuICAgIHx8IChpbnB1dC5wdXJwb3NlID09PSAncmVwb3J0JyAmJiBpbnB1dC5tZXNzYWdlU2VxdWVuY2UgPT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdpbnZhbGlkX3JlcXVlc3QnKTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkPEF1dGhvcml6ZWRNZW1iZXJzaGlwPihgXG4gICAgTEVUIHVzZXIgPSBET0NVTUVOVCgndXNlcnMnLCBAdXNlcklkKVxuICAgIExFVCBwZXJzb25hID0gRE9DVU1FTlQoJ3BlcnNvbmFzJywgQHBlcnNvbmFJZClcbiAgICBMRVQgY29udmVyc2F0aW9uID0gRE9DVU1FTlQoJ2NvbnZlcnNhdGlvbnMnLCBAY29udmVyc2F0aW9uSWQpXG4gICAgRklMVEVSIHVzZXIgIT0gbnVsbCBBTkQgdXNlci5hY3RpdmUgIT0gZmFsc2UgQU5EIHBlcnNvbmEgIT0gbnVsbCBBTkQgcGVyc29uYS5hY3RpdmUgIT0gZmFsc2VcbiAgICAgIEFORCBwZXJzb25hLnVzZXJJZCA9PSBAdXNlcklkIEFORCBjb252ZXJzYXRpb24gIT0gbnVsbCBBTkQgY29udmVyc2F0aW9uLmNoYXRTY2hlbWFWZXJzaW9uID09IDFcbiAgICAgIEFORCBjb252ZXJzYXRpb24ua2luZCBJTiBbJ2RpcmVjdCcsICdncm91cCddIEFORCBjb252ZXJzYXRpb24uc3RhdGUgSU4gWydhY3RpdmUnLCAnZm9ybWluZycsICdjbG9zZWQnXVxuICAgIExFVCBtZW1iZXJzaGlwID0gRklSU1QoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcFxuICAgICAgRklMVEVSIG1lbWJlci5jb252ZXJzYXRpb25JZCA9PSBAY29udmVyc2F0aW9uSWQgQU5EIG1lbWJlci5wZXJzb25hSWQgPT0gQHBlcnNvbmFJZFxuICAgICAgICBBTkQgbWVtYmVyLnVzZXJJZCA9PSBAdXNlcklkIEFORCBtZW1iZXIuX2Zyb20gPT0gQ09OQ0FUKCdwZXJzb25hcy8nLCBAcGVyc29uYUlkKVxuICAgICAgICBBTkQgbWVtYmVyLl90byA9PSBDT05DQVQoJ2NvbnZlcnNhdGlvbnMvJywgQGNvbnZlcnNhdGlvbklkKVxuICAgICAgICBBTkQgKEBlcG9jaCA9PSBudWxsIE9SIG1lbWJlci5lcG9jaCA9PSBAZXBvY2gpXG4gICAgICAgIEFORCAoQHB1cnBvc2UgPT0gJ3JlcG9ydCcgPyBtZW1iZXIuc3RhdGUgSU4gWydhY3RpdmUnLCAnbGVmdCcsICdyZW1vdmVkJ10gOiBtZW1iZXIuc3RhdGUgPT0gJ2FjdGl2ZScpXG4gICAgICAgIEFORCAoQHNlcXVlbmNlID09IG51bGwgT1IgKElTX05VTUJFUihtZW1iZXIuam9pblNlcXVlbmNlKSBBTkQgQHNlcXVlbmNlID49IG1lbWJlci5qb2luU2VxdWVuY2VcbiAgICAgICAgICBBTkQgQHNlcXVlbmNlIDw9IGNvbnZlcnNhdGlvbi5sYXN0U2VxdWVuY2VcbiAgICAgICAgICBBTkQgKG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJyBPUiAoSVNfTlVNQkVSKG1lbWJlci5sZWZ0U2VxdWVuY2UpIEFORCBAc2VxdWVuY2UgPD0gbWVtYmVyLmxlZnRTZXF1ZW5jZSkpKSlcbiAgICAgIFNPUlQgbWVtYmVyLmFjY2VwdGVkQXQgREVTQywgbWVtYmVyLl9rZXkgREVTQyBMSU1JVCAxIFJFVFVSTiBtZW1iZXIpXG4gICAgRklMVEVSIG1lbWJlcnNoaXAgIT0gbnVsbFxuICAgIExFVCBwZWVycyA9IChGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwXG4gICAgICBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZCBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnXG4gICAgICAgIEFORCBtZW1iZXIucGVyc29uYUlkICE9IEBwZXJzb25hSWQgUkVUVVJOIG1lbWJlcilcbiAgICBMRVQgcGVlciA9IEZJUlNUKHBlZXJzKVxuICAgIExFVCBwZWVyUGVyc29uYSA9IHBlZXIgPT0gbnVsbCA/IG51bGwgOiBET0NVTUVOVCgncGVyc29uYXMnLCBwZWVyLnBlcnNvbmFJZClcbiAgICBMRVQgcGVlclVzZXIgPSBwZWVyID09IG51bGwgPyBudWxsIDogRE9DVU1FTlQoJ3VzZXJzJywgcGVlci51c2VySWQpXG4gICAgTEVUIGJsb2NrZWQgPSBwZWVyID09IG51bGwgPyBmYWxzZSA6IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UudHlwZSA9PSAnYmxvY2snXG4gICAgICBBTkQgKChlZGdlLl9mcm9tIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIEBwZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIEB1c2VySWQpXVxuICAgICAgICBBTkQgZWRnZS5fdG8gSU4gW0NPTkNBVCgncGVyc29uYXMvJywgcGVlci5wZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIHBlZXIudXNlcklkKV0pXG4gICAgICAgIE9SIChlZGdlLl90byBJTiBbQ09OQ0FUKCdwZXJzb25hcy8nLCBAcGVyc29uYUlkKSwgQ09OQ0FUKCd1c2Vycy8nLCBAdXNlcklkKV1cbiAgICAgICAgQU5EIGVkZ2UuX2Zyb20gSU4gW0NPTkNBVCgncGVyc29uYXMvJywgcGVlci5wZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIHBlZXIudXNlcklkKV0pKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgIExFVCBmb2xsb3dpbmcgPSBwZWVyID09IG51bGwgPyBmYWxzZSA6IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb25cbiAgICAgIEZJTFRFUiBlZGdlLnR5cGUgPT0gJ2ZvbGxvdycgQU5EIGVkZ2UuYWN0aXZlICE9IGZhbHNlIEFORCBlZGdlLl9mcm9tID09IENPTkNBVCgncGVyc29uYXMvJywgQHBlcnNvbmFJZClcbiAgICAgICAgQU5EIGVkZ2UuX3RvID09IENPTkNBVCgncGVyc29uYXMvJywgcGVlci5wZXJzb25hSWQpIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgTEVUIGZvbGxvd2VkID0gcGVlciA9PSBudWxsID8gZmFsc2UgOiBGSVJTVChGT1IgZWRnZSBJTiBoYXNDb25uZWN0aW9uXG4gICAgICBGSUxURVIgZWRnZS50eXBlID09ICdmb2xsb3cnIEFORCBlZGdlLmFjdGl2ZSAhPSBmYWxzZSBBTkQgZWRnZS5fdG8gPT0gQ09OQ0FUKCdwZXJzb25hcy8nLCBAcGVyc29uYUlkKVxuICAgICAgICBBTkQgZWRnZS5fZnJvbSA9PSBDT05DQVQoJ3BlcnNvbmFzLycsIHBlZXIucGVyc29uYUlkKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgIEZJTFRFUiBAcHVycG9zZSBOT1QgSU4gWydzZW5kJywgJ3NvY2tldCddIE9SIChjb252ZXJzYXRpb24uc3RhdGUgPT0gJ2FjdGl2ZSdcbiAgICAgIEFORCAoY29udmVyc2F0aW9uLmtpbmQgIT0gJ2RpcmVjdCcgT1IgKExFTkdUSChwZWVycykgPT0gMSBBTkQgcGVlclBlcnNvbmEgIT0gbnVsbCBBTkQgcGVlclVzZXIgIT0gbnVsbFxuICAgICAgICBBTkQgcGVlclBlcnNvbmEuYWN0aXZlICE9IGZhbHNlIEFORCBwZWVyVXNlci5hY3RpdmUgIT0gZmFsc2UgQU5EIHBlZXJQZXJzb25hLnVzZXJJZCA9PSBwZWVyLnVzZXJJZFxuICAgICAgICBBTkQgYmxvY2tlZCAhPSB0cnVlIEFORCBmb2xsb3dpbmcgPT0gdHJ1ZSBBTkQgZm9sbG93ZWQgPT0gdHJ1ZSkpKVxuICAgIEZJTFRFUiBAcHVycG9zZSAhPSAnaW52aXRlJyBPUiAoY29udmVyc2F0aW9uLmtpbmQgPT0gJ2dyb3VwJyBBTkQgY29udmVyc2F0aW9uLnN0YXRlICE9ICdjbG9zZWQnXG4gICAgICBBTkQgbWVtYmVyc2hpcC5yb2xlIElOIFsnb3duZXInLCAnYWRtaW4nXSlcbiAgICBGSUxURVIgQHB1cnBvc2UgPT0gJ3JlcG9ydCcgT1IgY29udmVyc2F0aW9uLnN0YXRlICE9ICdjbG9zZWQnXG4gICAgUkVUVVJOIHthY3RpdmVNZW1iZXJDb3VudDogY29udmVyc2F0aW9uLmFjdGl2ZU1lbWJlckNvdW50LCBjb252ZXJzYXRpb25JZDogQGNvbnZlcnNhdGlvbklkLFxuICAgICAgY29udmVyc2F0aW9uU3RhdGU6IGNvbnZlcnNhdGlvbi5zdGF0ZSwgZXBvY2g6IG1lbWJlcnNoaXAuZXBvY2gsIGpvaW5TZXF1ZW5jZTogbWVtYmVyc2hpcC5qb2luU2VxdWVuY2UsXG4gICAgICBraW5kOiBjb252ZXJzYXRpb24ua2luZCwgbGFzdFNlcXVlbmNlOiBjb252ZXJzYXRpb24ubGFzdFNlcXVlbmNlLCBsZWZ0U2VxdWVuY2U6IG1lbWJlcnNoaXAubGVmdFNlcXVlbmNlLFxuICAgICAgbWVtYmVyc2hpcFJldmlzaW9uOiBjb252ZXJzYXRpb24ubWVtYmVyc2hpcFJldmlzaW9uLCBwZXJzb25hSWQ6IEBwZXJzb25hSWQsIHJldmlzaW9uOiBtZW1iZXJzaGlwLnJldmlzaW9uLFxuICAgICAgcm9sZTogbWVtYmVyc2hpcC5yb2xlLCBzdGF0ZTogbWVtYmVyc2hpcC5zdGF0ZX1cbiAgYCwge1xuICAgIGNvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCwgZXBvY2g6IGlucHV0Lm1lbWJlcnNoaXBFcG9jaCA/PyBudWxsLCBwZXJzb25hSWQ6IGlkZW50aXR5LnBlcnNvbmFJZCxcbiAgICBwdXJwb3NlOiBpbnB1dC5wdXJwb3NlLCBzZXF1ZW5jZTogaW5wdXQubWVzc2FnZVNlcXVlbmNlID8/IG51bGwsIHVzZXJJZDogaWRlbnRpdHkudXNlcklkXG4gIH0pO1xuICBpZighcmVzdWx0IHx8ICFpc0NoYXRJZGVudGlmaWVyKHJlc3VsdC5lcG9jaCkgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlc3VsdC5qb2luU2VxdWVuY2UpXG4gICAgfHwgcmVzdWx0LmpvaW5TZXF1ZW5jZSA8IDAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlc3VsdC5sYXN0U2VxdWVuY2UpIHx8IHJlc3VsdC5sYXN0U2VxdWVuY2UgPCAwXG4gICAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlc3VsdC5yZXZpc2lvbikgfHwgcmVzdWx0LnJldmlzaW9uIDwgMVxuICAgIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcihyZXN1bHQubWVtYmVyc2hpcFJldmlzaW9uKSB8fCByZXN1bHQubWVtYmVyc2hpcFJldmlzaW9uIDwgMVxuICAgIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcihyZXN1bHQuYWN0aXZlTWVtYmVyQ291bnQpIHx8IHJlc3VsdC5hY3RpdmVNZW1iZXJDb3VudCA8IDBcbiAgICB8fCByZXN1bHQuYWN0aXZlTWVtYmVyQ291bnQgPiAyNSB8fCAhWydvd25lcicsICdhZG1pbicsICdtZW1iZXInXS5pbmNsdWRlcyhyZXN1bHQucm9sZSkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhvcml6ZUNvbnZlcnNhdGlvbkFjY2VzcyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCwgaWRlbnRpdHk6IENoYXRJZGVudGl0eSwgaW5wdXQ6IE1lbWJlcnNoaXBBY2Nlc3NJbnB1dFxuKTogUHJvbWlzZTxBdXRob3JpemVkTWVtYmVyc2hpcD4gPT4gY3JlYXRlTWVtYmVyc2hpcEF1dGhvcml6ZXIoXG4gIGNyZWF0ZUR1cmFibGVRdWVyeShjb250ZXh0KVxuKShpZGVudGl0eSwgaW5wdXQpO1xuIl0sIm5hbWVzIjpbIkNoYXRFcnJvciIsImNyZWF0ZUR1cmFibGVRdWVyeSIsImlzQ2hhdElkZW50aWZpZXIiLCJ2YWx1ZSIsInRlc3QiLCJwdXJwb3NlcyIsImNyZWF0ZU1lbWJlcnNoaXBBdXRob3JpemVyIiwicmVhZCIsImlkZW50aXR5IiwiaW5wdXQiLCJ1c2VySWQiLCJwZXJzb25hSWQiLCJjb252ZXJzYXRpb25JZCIsImluY2x1ZGVzIiwicHVycG9zZSIsIm1lbWJlcnNoaXBFcG9jaCIsInVuZGVmaW5lZCIsIm1lc3NhZ2VTZXF1ZW5jZSIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJyZXN1bHQiLCJlcG9jaCIsInNlcXVlbmNlIiwiam9pblNlcXVlbmNlIiwibGFzdFNlcXVlbmNlIiwicmV2aXNpb24iLCJtZW1iZXJzaGlwUmV2aXNpb24iLCJhY3RpdmVNZW1iZXJDb3VudCIsInJvbGUiLCJhdXRob3JpemVDb252ZXJzYXRpb25BY2Nlc3MiLCJjb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxTQUFTLFFBQU8sY0FBYztBQUN0QyxTQUFRQyxrQkFBa0IsUUFBTyxtQkFBbUI7QUE0QnBELE9BQU8sTUFBTUMsbUJBQW1CLENBQUNDLFFBQy9CLE9BQU9BLFVBQVUsWUFBWSx5QkFBeUJDLElBQUksQ0FBQ0QsT0FBTztBQUVwRSxNQUFNRSxXQUF3RDtJQUFDO0lBQVc7SUFBVTtJQUFnQjtJQUFVO0lBQVE7Q0FBUztBQUUvSCxPQUFPLE1BQU1DLDZCQUE2QixDQUFDQyxPQUFvQixPQUM3REMsVUFBd0JDO1FBRXhCLElBQUcsQ0FBQ0QsWUFBWSxDQUFDTixpQkFBaUJNLFNBQVNFLE1BQU0sS0FBSyxDQUFDUixpQkFBaUJNLFNBQVNHLFNBQVMsR0FBRztZQUMzRixNQUFNLElBQUlYLFVBQVU7UUFDdEI7UUFDQSxJQUFHLENBQUNTLFNBQVMsQ0FBQ1AsaUJBQWlCTyxNQUFNRyxjQUFjLEtBQUssQ0FBQ1AsU0FBU1EsUUFBUSxDQUFDSixNQUFNSyxPQUFPLEtBQ2xGTCxNQUFNTSxlQUFlLEtBQUtDLGFBQWEsQ0FBQ2QsaUJBQWlCTyxNQUFNTSxlQUFlLEtBQzlFTixNQUFNUSxlQUFlLEtBQUtELGFBQ3hCLENBQUEsQ0FBQ0UsT0FBT0MsYUFBYSxDQUFDVixNQUFNUSxlQUFlLEtBQUtSLE1BQU1RLGVBQWUsR0FBRyxDQUFBLEtBQzFFUixNQUFNSyxPQUFPLEtBQUssWUFBWUwsTUFBTVEsZUFBZSxLQUFLRCxXQUFZO1lBQ3hFLE1BQU0sSUFBSWhCLFVBQVU7UUFDdEI7UUFDQSxNQUFNb0IsU0FBUyxNQUFNYixLQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQStDakQsQ0FBQyxFQUFFO1lBQ0RLLGdCQUFnQkgsTUFBTUcsY0FBYztZQUFFUyxPQUFPWixNQUFNTSxlQUFlLElBQUk7WUFBTUosV0FBV0gsU0FBU0csU0FBUztZQUN6R0csU0FBU0wsTUFBTUssT0FBTztZQUFFUSxVQUFVYixNQUFNUSxlQUFlLElBQUk7WUFBTVAsUUFBUUYsU0FBU0UsTUFBTTtRQUMxRjtRQUNBLElBQUcsQ0FBQ1UsVUFBVSxDQUFDbEIsaUJBQWlCa0IsT0FBT0MsS0FBSyxLQUFLLENBQUNILE9BQU9DLGFBQWEsQ0FBQ0MsT0FBT0csWUFBWSxLQUNyRkgsT0FBT0csWUFBWSxHQUFHLEtBQUssQ0FBQ0wsT0FBT0MsYUFBYSxDQUFDQyxPQUFPSSxZQUFZLEtBQUtKLE9BQU9JLFlBQVksR0FBRyxLQUMvRixDQUFDTixPQUFPQyxhQUFhLENBQUNDLE9BQU9LLFFBQVEsS0FBS0wsT0FBT0ssUUFBUSxHQUFHLEtBQzVELENBQUNQLE9BQU9DLGFBQWEsQ0FBQ0MsT0FBT00sa0JBQWtCLEtBQUtOLE9BQU9NLGtCQUFrQixHQUFHLEtBQ2hGLENBQUNSLE9BQU9DLGFBQWEsQ0FBQ0MsT0FBT08saUJBQWlCLEtBQUtQLE9BQU9PLGlCQUFpQixHQUFHLEtBQzlFUCxPQUFPTyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7WUFBQztZQUFTO1lBQVM7U0FBUyxDQUFDZCxRQUFRLENBQUNPLE9BQU9RLElBQUksR0FBRztZQUN6RixNQUFNLElBQUk1QixVQUFVO1FBQ3RCO1FBQ0EsT0FBT29CO0lBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTVMsOEJBQThCLENBQ3pDQyxTQUFxQnRCLFVBQXdCQyxRQUNYSCwyQkFDbENMLG1CQUFtQjZCLFVBQ25CdEIsVUFBVUMsT0FBTyJ9
|
|
85
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvbWVtYmVyc2hpcC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYXRFcnJvcn0gZnJvbSAnLi9lcnJvcnMuanMnO1xuaW1wb3J0IHtjcmVhdGVEdXJhYmxlUXVlcnl9IGZyb20gJy4vdHJhbnNhY3Rpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7QXBpQ29udGV4dH0gZnJvbSAnLi4vdHlwZXMvYXV0aC50eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7Q29udmVyc2F0aW9uS2luZCwgQ29udmVyc2F0aW9uTWVtYmVyc2hpcCwgQ29udmVyc2F0aW9uU3RhdGV9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENoYXRJZGVudGl0eSB7XG4gIHJlYWRvbmx5IHBlcnNvbmFJZDogc3RyaW5nO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZW1iZXJzaGlwQWNjZXNzSW5wdXQge1xuICByZWFkb25seSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICByZWFkb25seSBtZW1iZXJzaGlwRXBvY2g/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1lc3NhZ2VTZXF1ZW5jZT86IG51bWJlcjtcbiAgcmVhZG9ubHkgcHVycG9zZTogJ2hpc3RvcnknIHwgJ2ludml0ZScgfCAncGFydGljaXBhbnRzJyB8ICdyZXBvcnQnIHwgJ3NlbmQnIHwgJ3NvY2tldCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aG9yaXplZE1lbWJlcnNoaXAgZXh0ZW5kcyBDb252ZXJzYXRpb25NZW1iZXJzaGlwIHtcbiAgcmVhZG9ubHkgYWN0aXZlTWVtYmVyQ291bnQ6IG51bWJlcjtcbiAgcmVhZG9ubHkgY29udmVyc2F0aW9uU3RhdGU6IENvbnZlcnNhdGlvblN0YXRlO1xuICByZWFkb25seSBraW5kOiBDb252ZXJzYXRpb25LaW5kO1xuICByZWFkb25seSBsYXN0U2VxdWVuY2U6IG51bWJlcjtcbiAgcmVhZG9ubHkgbWVtYmVyc2hpcFJldmlzaW9uOiBudW1iZXI7XG59XG5cbi8qKiBJbmplY3QgdGhlIHRyYW5zYWN0aW9uJ3MgcXVlcnkgYWRhcHRlciB3aGVuIHRoaXMgY2hlY2sgZ3VhcmRzIGEgd3JpdGUuICovXG5leHBvcnQgdHlwZSBDaGF0UXVlcnkgPSA8VD4ocXVlcnk6IHN0cmluZywgYmluZFZhcnM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiBQcm9taXNlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXNDaGF0SWRlbnRpZmllciA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIHN0cmluZyA9PlxuICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIC9eW2EtekEtWjAtOV8tXXsxLDEyOH0kLy50ZXN0KHZhbHVlKTtcblxuY29uc3QgcHVycG9zZXM6IHJlYWRvbmx5IE1lbWJlcnNoaXBBY2Nlc3NJbnB1dFsncHVycG9zZSddW10gPSBbJ2hpc3RvcnknLCAnaW52aXRlJywgJ3BhcnRpY2lwYW50cycsICdyZXBvcnQnLCAnc2VuZCcsICdzb2NrZXQnXTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZU1lbWJlcnNoaXBBdXRob3JpemVyID0gKHJlYWQ6IENoYXRRdWVyeSkgPT4gYXN5bmMgKFxuICBpZGVudGl0eTogQ2hhdElkZW50aXR5LCBpbnB1dDogTWVtYmVyc2hpcEFjY2Vzc0lucHV0XG4pOiBQcm9taXNlPEF1dGhvcml6ZWRNZW1iZXJzaGlwPiA9PiB7XG4gIGlmKCFpZGVudGl0eSB8fCAhaXNDaGF0SWRlbnRpZmllcihpZGVudGl0eS51c2VySWQpIHx8ICFpc0NoYXRJZGVudGlmaWVyKGlkZW50aXR5LnBlcnNvbmFJZCkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICBpZighaW5wdXQgfHwgIWlzQ2hhdElkZW50aWZpZXIoaW5wdXQuY29udmVyc2F0aW9uSWQpIHx8ICFwdXJwb3Nlcy5pbmNsdWRlcyhpbnB1dC5wdXJwb3NlKVxuICAgIHx8IChpbnB1dC5tZW1iZXJzaGlwRXBvY2ggIT09IHVuZGVmaW5lZCAmJiAhaXNDaGF0SWRlbnRpZmllcihpbnB1dC5tZW1iZXJzaGlwRXBvY2gpKVxuICAgIHx8IChpbnB1dC5tZXNzYWdlU2VxdWVuY2UgIT09IHVuZGVmaW5lZFxuICAgICAgJiYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihpbnB1dC5tZXNzYWdlU2VxdWVuY2UpIHx8IGlucHV0Lm1lc3NhZ2VTZXF1ZW5jZSA8IDEpKVxuICAgIHx8IChpbnB1dC5wdXJwb3NlID09PSAncmVwb3J0JyAmJiBpbnB1dC5tZXNzYWdlU2VxdWVuY2UgPT09IHVuZGVmaW5lZCkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdpbnZhbGlkX3JlcXVlc3QnKTtcbiAgfVxuICBjb25zdCByZXN1bHQgPSBhd2FpdCByZWFkPEF1dGhvcml6ZWRNZW1iZXJzaGlwPihgXG4gICAgTEVUIHVzZXIgPSBET0NVTUVOVCgndXNlcnMnLCBAdXNlcklkKVxuICAgIExFVCBwZXJzb25hID0gRE9DVU1FTlQoJ3BlcnNvbmFzJywgQHBlcnNvbmFJZClcbiAgICBMRVQgY29udmVyc2F0aW9uID0gRE9DVU1FTlQoJ2NvbnZlcnNhdGlvbnMnLCBAY29udmVyc2F0aW9uSWQpXG4gICAgRklMVEVSIHVzZXIgIT0gbnVsbCBBTkQgdXNlci5hY3RpdmUgIT0gZmFsc2UgQU5EIHBlcnNvbmEgIT0gbnVsbCBBTkQgcGVyc29uYS5hY3RpdmUgIT0gZmFsc2VcbiAgICAgIEFORCBwZXJzb25hLnVzZXJJZCA9PSBAdXNlcklkIEFORCBjb252ZXJzYXRpb24gIT0gbnVsbCBBTkQgY29udmVyc2F0aW9uLmNoYXRTY2hlbWFWZXJzaW9uID09IDFcbiAgICAgIEFORCBjb252ZXJzYXRpb24ua2luZCBJTiBbJ2RpcmVjdCcsICdncm91cCddIEFORCBjb252ZXJzYXRpb24uc3RhdGUgSU4gWydhY3RpdmUnLCAnZm9ybWluZycsICdjbG9zZWQnXVxuICAgIExFVCBtZW1iZXJzaGlwID0gRklSU1QoRk9SIG1lbWJlciBJTiBoYXNDaGF0TWVtYmVyc2hpcFxuICAgICAgRklMVEVSIG1lbWJlci5jb252ZXJzYXRpb25JZCA9PSBAY29udmVyc2F0aW9uSWQgQU5EIG1lbWJlci5wZXJzb25hSWQgPT0gQHBlcnNvbmFJZFxuICAgICAgICBBTkQgbWVtYmVyLnVzZXJJZCA9PSBAdXNlcklkIEFORCBtZW1iZXIuX2Zyb20gPT0gQ09OQ0FUKCdwZXJzb25hcy8nLCBAcGVyc29uYUlkKVxuICAgICAgICBBTkQgbWVtYmVyLl90byA9PSBDT05DQVQoJ2NvbnZlcnNhdGlvbnMvJywgQGNvbnZlcnNhdGlvbklkKVxuICAgICAgICBBTkQgKEBlcG9jaCA9PSBudWxsIE9SIG1lbWJlci5lcG9jaCA9PSBAZXBvY2gpXG4gICAgICAgIEFORCAoQHB1cnBvc2UgPT0gJ3JlcG9ydCcgPyBtZW1iZXIuc3RhdGUgSU4gWydhY3RpdmUnLCAnbGVmdCcsICdyZW1vdmVkJ10gOiBtZW1iZXIuc3RhdGUgPT0gJ2FjdGl2ZScpXG4gICAgICAgIEFORCAoQHNlcXVlbmNlID09IG51bGwgT1IgKElTX05VTUJFUihtZW1iZXIuam9pblNlcXVlbmNlKSBBTkQgQHNlcXVlbmNlID49IG1lbWJlci5qb2luU2VxdWVuY2VcbiAgICAgICAgICBBTkQgQHNlcXVlbmNlIDw9IGNvbnZlcnNhdGlvbi5sYXN0U2VxdWVuY2VcbiAgICAgICAgICBBTkQgKG1lbWJlci5zdGF0ZSA9PSAnYWN0aXZlJyBPUiAoSVNfTlVNQkVSKG1lbWJlci5sZWZ0U2VxdWVuY2UpIEFORCBAc2VxdWVuY2UgPD0gbWVtYmVyLmxlZnRTZXF1ZW5jZSkpKSlcbiAgICAgIFNPUlQgbWVtYmVyLmFjY2VwdGVkQXQgREVTQywgbWVtYmVyLl9rZXkgREVTQyBMSU1JVCAxIFJFVFVSTiBtZW1iZXIpXG4gICAgRklMVEVSIG1lbWJlcnNoaXAgIT0gbnVsbFxuICAgIExFVCBwZWVycyA9IChGT1IgbWVtYmVyIElOIGhhc0NoYXRNZW1iZXJzaGlwXG4gICAgICBGSUxURVIgbWVtYmVyLmNvbnZlcnNhdGlvbklkID09IEBjb252ZXJzYXRpb25JZCBBTkQgbWVtYmVyLnN0YXRlID09ICdhY3RpdmUnXG4gICAgICAgIEFORCBtZW1iZXIucGVyc29uYUlkICE9IEBwZXJzb25hSWQgUkVUVVJOIG1lbWJlcilcbiAgICBMRVQgcGVlciA9IEZJUlNUKHBlZXJzKVxuICAgIExFVCBwZWVyUGVyc29uYSA9IHBlZXIgPT0gbnVsbCA/IG51bGwgOiBET0NVTUVOVCgncGVyc29uYXMnLCBwZWVyLnBlcnNvbmFJZClcbiAgICBMRVQgcGVlclVzZXIgPSBwZWVyID09IG51bGwgPyBudWxsIDogRE9DVU1FTlQoJ3VzZXJzJywgcGVlci51c2VySWQpXG4gICAgTEVUIGJsb2NrZWQgPSBwZWVyID09IG51bGwgPyBmYWxzZSA6IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb24gRklMVEVSIGVkZ2UudHlwZSA9PSAnYmxvY2snXG4gICAgICBBTkQgKChlZGdlLl9mcm9tIElOIFtDT05DQVQoJ3BlcnNvbmFzLycsIEBwZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIEB1c2VySWQpXVxuICAgICAgICBBTkQgZWRnZS5fdG8gSU4gW0NPTkNBVCgncGVyc29uYXMvJywgcGVlci5wZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIHBlZXIudXNlcklkKV0pXG4gICAgICAgIE9SIChlZGdlLl90byBJTiBbQ09OQ0FUKCdwZXJzb25hcy8nLCBAcGVyc29uYUlkKSwgQ09OQ0FUKCd1c2Vycy8nLCBAdXNlcklkKV1cbiAgICAgICAgQU5EIGVkZ2UuX2Zyb20gSU4gW0NPTkNBVCgncGVyc29uYXMvJywgcGVlci5wZXJzb25hSWQpLCBDT05DQVQoJ3VzZXJzLycsIHBlZXIudXNlcklkKV0pKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgIExFVCBmb2xsb3dpbmcgPSBwZWVyID09IG51bGwgPyBmYWxzZSA6IEZJUlNUKEZPUiBlZGdlIElOIGhhc0Nvbm5lY3Rpb25cbiAgICAgIEZJTFRFUiBlZGdlLnR5cGUgPT0gJ2ZvbGxvdycgQU5EIGVkZ2UuYWN0aXZlICE9IGZhbHNlIEFORCBlZGdlLl9mcm9tID09IENPTkNBVCgncGVyc29uYXMvJywgQHBlcnNvbmFJZClcbiAgICAgICAgQU5EIGVkZ2UuX3RvID09IENPTkNBVCgncGVyc29uYXMvJywgcGVlci5wZXJzb25hSWQpIExJTUlUIDEgUkVUVVJOIHRydWUpXG4gICAgTEVUIGZvbGxvd2VkID0gcGVlciA9PSBudWxsID8gZmFsc2UgOiBGSVJTVChGT1IgZWRnZSBJTiBoYXNDb25uZWN0aW9uXG4gICAgICBGSUxURVIgZWRnZS50eXBlID09ICdmb2xsb3cnIEFORCBlZGdlLmFjdGl2ZSAhPSBmYWxzZSBBTkQgZWRnZS5fdG8gPT0gQ09OQ0FUKCdwZXJzb25hcy8nLCBAcGVyc29uYUlkKVxuICAgICAgICBBTkQgZWRnZS5fZnJvbSA9PSBDT05DQVQoJ3BlcnNvbmFzLycsIHBlZXIucGVyc29uYUlkKSBMSU1JVCAxIFJFVFVSTiB0cnVlKVxuICAgIEZJTFRFUiBAcHVycG9zZSBOT1QgSU4gWydzZW5kJywgJ3NvY2tldCddIE9SIChjb252ZXJzYXRpb24uc3RhdGUgPT0gJ2FjdGl2ZSdcbiAgICAgIEFORCAoY29udmVyc2F0aW9uLmtpbmQgIT0gJ2RpcmVjdCcgT1IgKExFTkdUSChwZWVycykgPT0gMSBBTkQgcGVlclBlcnNvbmEgIT0gbnVsbCBBTkQgcGVlclVzZXIgIT0gbnVsbFxuICAgICAgICBBTkQgcGVlclBlcnNvbmEuYWN0aXZlICE9IGZhbHNlIEFORCBwZWVyVXNlci5hY3RpdmUgIT0gZmFsc2UgQU5EIHBlZXJQZXJzb25hLnVzZXJJZCA9PSBwZWVyLnVzZXJJZFxuICAgICAgICBBTkQgYmxvY2tlZCAhPSB0cnVlIEFORCBmb2xsb3dpbmcgPT0gdHJ1ZSBBTkQgZm9sbG93ZWQgPT0gdHJ1ZSkpKVxuICAgIEZJTFRFUiBAcHVycG9zZSAhPSAnaW52aXRlJyBPUiAoY29udmVyc2F0aW9uLmtpbmQgPT0gJ2dyb3VwJyBBTkQgY29udmVyc2F0aW9uLnN0YXRlICE9ICdjbG9zZWQnXG4gICAgICBBTkQgbWVtYmVyc2hpcC5yb2xlIElOIFsnb3duZXInLCAnYWRtaW4nXSlcbiAgICBGSUxURVIgQHB1cnBvc2UgPT0gJ3JlcG9ydCcgT1IgY29udmVyc2F0aW9uLnN0YXRlICE9ICdjbG9zZWQnXG4gICAgUkVUVVJOIHthY3RpdmVNZW1iZXJDb3VudDogY29udmVyc2F0aW9uLmFjdGl2ZU1lbWJlckNvdW50LCBjb252ZXJzYXRpb25JZDogQGNvbnZlcnNhdGlvbklkLFxuICAgICAgY29udmVyc2F0aW9uU3RhdGU6IGNvbnZlcnNhdGlvbi5zdGF0ZSwgZXBvY2g6IG1lbWJlcnNoaXAuZXBvY2gsIGpvaW5TZXF1ZW5jZTogbWVtYmVyc2hpcC5qb2luU2VxdWVuY2UsXG4gICAgICBraW5kOiBjb252ZXJzYXRpb24ua2luZCwgbGFzdFNlcXVlbmNlOiBjb252ZXJzYXRpb24ubGFzdFNlcXVlbmNlLCBsZWZ0U2VxdWVuY2U6IG1lbWJlcnNoaXAubGVmdFNlcXVlbmNlLFxuICAgICAgbWVtYmVyc2hpcFJldmlzaW9uOiBjb252ZXJzYXRpb24ubWVtYmVyc2hpcFJldmlzaW9uLCBwZXJzb25hSWQ6IEBwZXJzb25hSWQsIHJldmlzaW9uOiBtZW1iZXJzaGlwLnJldmlzaW9uLFxuICAgICAgcm9sZTogbWVtYmVyc2hpcC5yb2xlLCBzdGF0ZTogbWVtYmVyc2hpcC5zdGF0ZX1cbiAgYCwge1xuICAgIGNvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCwgZXBvY2g6IGlucHV0Lm1lbWJlcnNoaXBFcG9jaCA/PyBudWxsLCBwZXJzb25hSWQ6IGlkZW50aXR5LnBlcnNvbmFJZCxcbiAgICBwdXJwb3NlOiBpbnB1dC5wdXJwb3NlLCBzZXF1ZW5jZTogaW5wdXQubWVzc2FnZVNlcXVlbmNlID8/IG51bGwsIHVzZXJJZDogaWRlbnRpdHkudXNlcklkXG4gIH0pO1xuICBpZighcmVzdWx0IHx8ICFpc0NoYXRJZGVudGlmaWVyKHJlc3VsdC5lcG9jaCkgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlc3VsdC5qb2luU2VxdWVuY2UpXG4gICAgfHwgcmVzdWx0LmpvaW5TZXF1ZW5jZSA8IDAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlc3VsdC5sYXN0U2VxdWVuY2UpIHx8IHJlc3VsdC5sYXN0U2VxdWVuY2UgPCAwXG4gICAgfHwgIU51bWJlci5pc1NhZmVJbnRlZ2VyKHJlc3VsdC5yZXZpc2lvbikgfHwgcmVzdWx0LnJldmlzaW9uIDwgMVxuICAgIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcihyZXN1bHQubWVtYmVyc2hpcFJldmlzaW9uKSB8fCByZXN1bHQubWVtYmVyc2hpcFJldmlzaW9uIDwgMVxuICAgIHx8ICFOdW1iZXIuaXNTYWZlSW50ZWdlcihyZXN1bHQuYWN0aXZlTWVtYmVyQ291bnQpIHx8IHJlc3VsdC5hY3RpdmVNZW1iZXJDb3VudCA8IDBcbiAgICB8fCByZXN1bHQuYWN0aXZlTWVtYmVyQ291bnQgPiAyNSB8fCAhWydvd25lcicsICdhZG1pbicsICdtZW1iZXInXS5pbmNsdWRlcyhyZXN1bHQucm9sZSkpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhvcml6ZUNvbnZlcnNhdGlvbkFjY2VzcyA9IChcbiAgY29udGV4dDogQXBpQ29udGV4dCwgaWRlbnRpdHk6IENoYXRJZGVudGl0eSwgaW5wdXQ6IE1lbWJlcnNoaXBBY2Nlc3NJbnB1dFxuKTogUHJvbWlzZTxBdXRob3JpemVkTWVtYmVyc2hpcD4gPT4gY3JlYXRlTWVtYmVyc2hpcEF1dGhvcml6ZXIoXG4gIGNyZWF0ZUR1cmFibGVRdWVyeShjb250ZXh0KVxuKShpZGVudGl0eSwgaW5wdXQpO1xuIl0sIm5hbWVzIjpbIkNoYXRFcnJvciIsImNyZWF0ZUR1cmFibGVRdWVyeSIsImlzQ2hhdElkZW50aWZpZXIiLCJ2YWx1ZSIsInRlc3QiLCJwdXJwb3NlcyIsImNyZWF0ZU1lbWJlcnNoaXBBdXRob3JpemVyIiwicmVhZCIsImlkZW50aXR5IiwiaW5wdXQiLCJ1c2VySWQiLCJwZXJzb25hSWQiLCJjb252ZXJzYXRpb25JZCIsImluY2x1ZGVzIiwicHVycG9zZSIsIm1lbWJlcnNoaXBFcG9jaCIsInVuZGVmaW5lZCIsIm1lc3NhZ2VTZXF1ZW5jZSIsIk51bWJlciIsImlzU2FmZUludGVnZXIiLCJyZXN1bHQiLCJlcG9jaCIsInNlcXVlbmNlIiwiam9pblNlcXVlbmNlIiwibGFzdFNlcXVlbmNlIiwicmV2aXNpb24iLCJtZW1iZXJzaGlwUmV2aXNpb24iLCJhY3RpdmVNZW1iZXJDb3VudCIsInJvbGUiLCJhdXRob3JpemVDb252ZXJzYXRpb25BY2Nlc3MiLCJjb250ZXh0Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxTQUFTLFFBQU8sY0FBYztBQUN0QyxTQUFRQyxrQkFBa0IsUUFBTyxtQkFBbUI7QUE0QnBELE9BQU8sTUFBTUMsbUJBQW1CLENBQUNDLFFBQy9CLE9BQU9BLFVBQVUsWUFBWSx5QkFBeUJDLElBQUksQ0FBQ0QsT0FBTztBQUVwRSxNQUFNRSxXQUF3RDtJQUFDO0lBQVc7SUFBVTtJQUFnQjtJQUFVO0lBQVE7Q0FBUztBQUUvSCxPQUFPLE1BQU1DLDZCQUE2QixDQUFDQyxPQUFvQixPQUM3REMsVUFBd0JDO1FBRXhCLElBQUcsQ0FBQ0QsWUFBWSxDQUFDTixpQkFBaUJNLFNBQVNFLE1BQU0sS0FBSyxDQUFDUixpQkFBaUJNLFNBQVNHLFNBQVMsR0FBRztZQUMzRixNQUFNLElBQUlYLFVBQVU7UUFDdEI7UUFDQSxJQUFHLENBQUNTLFNBQVMsQ0FBQ1AsaUJBQWlCTyxNQUFNRyxjQUFjLEtBQUssQ0FBQ1AsU0FBU1EsUUFBUSxDQUFDSixNQUFNSyxPQUFPLEtBQ2xGTCxNQUFNTSxlQUFlLEtBQUtDLGFBQWEsQ0FBQ2QsaUJBQWlCTyxNQUFNTSxlQUFlLEtBQzlFTixNQUFNUSxlQUFlLEtBQUtELGFBQ3hCLENBQUEsQ0FBQ0UsT0FBT0MsYUFBYSxDQUFDVixNQUFNUSxlQUFlLEtBQUtSLE1BQU1RLGVBQWUsR0FBRyxDQUFBLEtBQzFFUixNQUFNSyxPQUFPLEtBQUssWUFBWUwsTUFBTVEsZUFBZSxLQUFLRCxXQUFZO1lBQ3hFLE1BQU0sSUFBSWhCLFVBQVU7UUFDdEI7UUFDQSxNQUFNb0IsU0FBUyxNQUFNYixLQUEyQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQStDakQsQ0FBQyxFQUFFO1lBQ0RLLGdCQUFnQkgsTUFBTUcsY0FBYztZQUFFUyxPQUFPWixNQUFNTSxlQUFlLElBQUk7WUFBTUosV0FBV0gsU0FBU0csU0FBUztZQUN6R0csU0FBU0wsTUFBTUssT0FBTztZQUFFUSxVQUFVYixNQUFNUSxlQUFlLElBQUk7WUFBTVAsUUFBUUYsU0FBU0UsTUFBTTtRQUMxRjtRQUNBLElBQUcsQ0FBQ1UsVUFBVSxDQUFDbEIsaUJBQWlCa0IsT0FBT0MsS0FBSyxLQUFLLENBQUNILE9BQU9DLGFBQWEsQ0FBQ0MsT0FBT0csWUFBWSxLQUNyRkgsT0FBT0csWUFBWSxHQUFHLEtBQUssQ0FBQ0wsT0FBT0MsYUFBYSxDQUFDQyxPQUFPSSxZQUFZLEtBQUtKLE9BQU9JLFlBQVksR0FBRyxLQUMvRixDQUFDTixPQUFPQyxhQUFhLENBQUNDLE9BQU9LLFFBQVEsS0FBS0wsT0FBT0ssUUFBUSxHQUFHLEtBQzVELENBQUNQLE9BQU9DLGFBQWEsQ0FBQ0MsT0FBT00sa0JBQWtCLEtBQUtOLE9BQU9NLGtCQUFrQixHQUFHLEtBQ2hGLENBQUNSLE9BQU9DLGFBQWEsQ0FBQ0MsT0FBT08saUJBQWlCLEtBQUtQLE9BQU9PLGlCQUFpQixHQUFHLEtBQzlFUCxPQUFPTyxpQkFBaUIsR0FBRyxNQUFNLENBQUM7WUFBQztZQUFTO1lBQVM7U0FBUyxDQUFDZCxRQUFRLENBQUNPLE9BQU9RLElBQUksR0FBRztZQUN6RixNQUFNLElBQUk1QixVQUFVO1FBQ3RCO1FBQ0EsT0FBT29CO0lBQ1QsRUFBRTtBQUVGLE9BQU8sTUFBTVMsOEJBQThCLENBQ3pDQyxTQUFxQnRCLFVBQXdCQyxRQUNYSCwyQkFDbENMLG1CQUFtQjZCLFVBQ25CdEIsVUFBVUMsT0FBTyJ9
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvbWVzc2FnZVR5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtBcHBlbmRDaGF0RXZlbnRJbnB1dH0gZnJvbSAnLi9ldmVudHMuanMnO1xuaW1wb3J0IHR5cGUge0F1dGhvcml6ZWRNZW1iZXJzaGlwLCBDaGF0SWRlbnRpdHksIENoYXRRdWVyeX0gZnJvbSAnLi9tZW1iZXJzaGlwLmpzJztcblxuZXhwb3J0IGludGVyZmFjZSBEdXJhYmxlQ2hhdEF0dGFjaG1lbnQge1xuICByZWFkb25seSBjb250ZW50VmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBpbWFnZUlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZUNoYXRNZXNzYWdlPFREZWNpc2lvbiA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgX2tleTogc3RyaW5nO1xuICByZWFkb25seSBhZGRlZDogbnVtYmVyO1xuICByZWFkb25seSBhdHRhY2htZW50SWRzOiByZWFkb25seSBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgYXR0YWNobWVudHM6IHJlYWRvbmx5IER1cmFibGVDaGF0QXR0YWNobWVudFtdO1xuICByZWFkb25seSBjaGF0U2NoZW1hVmVyc2lvbjogMTtcbiAgcmVhZG9ubHkgY2xpZW50TWVzc2FnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgY29udGVudFJldmlzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGRlbGV0ZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGRlbGV0ZWRBdXRob3JQcm9vZklkPzogc3RyaW5nO1xuICByZWFkb25seSBtb2JpbGVDb250ZW50VmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBtb2JpbGVEZWNpc2lvbjogVERlY2lzaW9uO1xuICByZWFkb25seSBtb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG1vZGlmaWVkOiBudW1iZXI7XG4gIHJlYWRvbmx5IHJlcGx5VG9NZXNzYWdlSWQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJldmlzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNlbmRlclBlcnNvbmFJZDogc3RyaW5nO1xuICByZWFkb25seSBzZXF1ZW5jZTogbnVtYmVyO1xuICByZWFkb25seSB1c2VySWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdXJhYmxlU2VuZE1lc3NhZ2VJbnB1dCB7XG4gIHJlYWRvbmx5IGF0dGFjaG1lbnRJZHM6IHJlYWRvbmx5IHN0cmluZ1tdO1xuICByZWFkb25seSBjbGllbnRNZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuICByZWFkb25seSBjb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICByZWFkb25seSByZXBseVRvTWVzc2FnZUlkPzogc3RyaW5nO1xuICByZWFkb25seSBzZW5kZXJQZXJzb25hSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCB7XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgZXhwZWN0ZWRSZXZpc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBpZGVtcG90ZW5jeUtleTogc3RyaW5nO1xuICByZWFkb25seSBtZXNzYWdlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRHVyYWJsZURlbGV0ZU1lc3NhZ2VJbnB1dCA9IE9taXQ8RHVyYWJsZUVkaXRNZXNzYWdlSW5wdXQsICdjb250ZW50Jz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZU1lc3NhZ2VBY2tub3dsZWRnZW1lbnQge1xuICByZWFkb25seSBjbGllbnRNZXNzYWdlSWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgbWVzc2FnZUlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHJldmlzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZU1lc3NhZ2VNdXRhdGlvblJlc3VsdCB7XG4gIHJlYWRvbmx5IG1lc3NhZ2VJZDogc3RyaW5nO1xuICByZWFkb25seSByZXZpc2lvbjogbnVtYmVyO1xuICByZWFkb25seSBzZXF1ZW5jZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIER1cmFibGVDb250ZW50UHJvamVjdGlvbjxURGVjaXNpb24+IHtcbiAgcmVhZG9ubHkgZGVjaXNpb246IFREZWNpc2lvbjtcbiAgcmVhZG9ubHkgcGxhdGZvcm1EaXNwb3NpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgRHVyYWJsZU1lc3NhZ2VSdW4gPSA8VD4ob3BlcmF0aW9uOiAocmVhZDogQ2hhdFF1ZXJ5KSA9PiBQcm9taXNlPFQ+LCB3cml0ZT86IGJvb2xlYW4pID0+IFByb21pc2U8VD47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRHVyYWJsZU1lc3NhZ2VIb29rczxURGVjaXNpb24+IHtcbiAgcmVhZG9ubHkgYXBwZW5kRXZlbnQ6IChyZWFkOiBDaGF0UXVlcnksIGlucHV0OiBBcHBlbmRDaGF0RXZlbnRJbnB1dCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgcmVhZG9ubHkgYXV0aG9yaXplQXR0YWNobWVudDogKHJlYWQ6IENoYXRRdWVyeSwgaW1hZ2VJZDogc3RyaW5nKSA9PiBQcm9taXNlPER1cmFibGVDaGF0QXR0YWNobWVudD47XG4gIHJlYWRvbmx5IGF1dGhvcml6ZUlkZW50aXR5OiAocmVhZDogQ2hhdFF1ZXJ5LCBpZGVudGl0eTogQ2hhdElkZW50aXR5KSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWFkb25seSBhdXRob3JpemVNZW1iZXJzaGlwOiAoXG4gICAgcmVhZDogQ2hhdFF1ZXJ5LCBpZGVudGl0eTogQ2hhdElkZW50aXR5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nLCBwdXJwb3NlOiAnaGlzdG9yeScgfCAnc2VuZCdcbiAgKSA9PiBQcm9taXNlPEF1dGhvcml6ZWRNZW1iZXJzaGlwPjtcbiAgcmVhZG9ubHkgYXV0aG9yaXplTWVzc2FnZVZpc2libGU6IChcbiAgICByZWFkOiBDaGF0UXVlcnksIGlkZW50aXR5OiBDaGF0SWRlbnRpdHksIG1lc3NhZ2U6IER1cmFibGVDaGF0TWVzc2FnZTxURGVjaXNpb24+LCBtZW1iZXJzaGlwOiBBdXRob3JpemVkTWVtYmVyc2hpcFxuICApID0+IFByb21pc2U8dm9pZD47XG4gIHJlYWRvbmx5IGNsYXNzaWZ5Q29udGVudDogKGlucHV0OiB7XG4gICAgcmVhZG9ubHkgY29udGVudDogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGNvbnRlbnRWZXJzaW9uOiBzdHJpbmc7XG4gIH0pID0+IER1cmFibGVDb250ZW50UHJvamVjdGlvbjxURGVjaXNpb24+IHwgUHJvbWlzZTxEdXJhYmxlQ29udGVudFByb2plY3Rpb248VERlY2lzaW9uPj47XG4gIHJlYWRvbmx5IGhhc2g/OiAodmFsdWU6IHVua25vd24pID0+IHN0cmluZztcbiAgcmVhZG9ubHkgaWRlbnRpdHk6IENoYXRJZGVudGl0eTtcbiAgcmVhZG9ubHkgbm93PzogKCkgPT4gbnVtYmVyO1xuICByZWFkb25seSBydW46IER1cmFibGVNZXNzYWdlUnVuO1xuICByZWFkb25seSB1dWlkPzogKCkgPT4gc3RyaW5nO1xufVxuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNFQSxXQW1CQyJ9
|
|
@@ -254,4 +254,4 @@ export const createDurableMessagePersistence = (hooks)=>{
|
|
|
254
254
|
};
|
|
255
255
|
};
|
|
256
256
|
|
|
257
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9uaXRyb2c3L0RldmVsb3BtZW50L3JlYWt0b3IvcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvbWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCwgbm8tdW5kZXJzY29yZS1kYW5nbGUgLS0gT3JkZXJlZCBjaGVja3MgYW5kIEFyYW5nbyBkb2N1bWVudCBpZGVudGl0aWVzLiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCByYW5kb21VVUlEfSBmcm9tICdub2RlOmNyeXB0byc7XG5cbmltcG9ydCB7Q2hhdEVycm9yfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQge2lzQ2hhdElkZW50aWZpZXJ9IGZyb20gJy4vbWVtYmVyc2hpcC5qcyc7XG5cbmltcG9ydCB0eXBlIHtDaGF0UXVlcnl9IGZyb20gJy4vbWVtYmVyc2hpcC5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIER1cmFibGVDaGF0QXR0YWNobWVudCwgRHVyYWJsZUNoYXRNZXNzYWdlLCBEdXJhYmxlRGVsZXRlTWVzc2FnZUlucHV0LCBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCxcbiAgRHVyYWJsZU1lc3NhZ2VBY2tub3dsZWRnZW1lbnQsIER1cmFibGVNZXNzYWdlSG9va3MsIER1cmFibGVNZXNzYWdlTXV0YXRpb25SZXN1bHQsIER1cmFibGVTZW5kTWVzc2FnZUlucHV0XG59IGZyb20gJy4vbWVzc2FnZVR5cGVzLmpzJztcblxuY29uc3QgZGVmYXVsdEhhc2ggPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkuZGlnZXN0KCdoZXgnKTtcbmNvbnN0IHZhbGlkVGV4dCA9IChjb250ZW50OiB1bmtub3duKTogY29udGVudCBpcyBzdHJpbmcgPT4gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnXG4gICYmIEFycmF5LmZyb20oY29udGVudCkubGVuZ3RoIDw9IDQwMDBcbiAgJiYgIS9bXFx1MDAwMFxcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD88IVtcXHVEODAwLVxcdURCRkZdKVtcXHVEQzAwLVxcdURGRkZdL3UudGVzdChjb250ZW50KTtcbmNvbnN0IHJlcXVpcmVWYWxpZCA9ICh2YWxpZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICBpZighdmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdpbnZhbGlkX3JlcXVlc3QnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlYWREdXJhYmxlTWVzc2FnZSA9IGFzeW5jIDxURGVjaXNpb24+KFxuICByZWFkOiBDaGF0UXVlcnksIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nXG4pOiBQcm9taXNlPER1cmFibGVDaGF0TWVzc2FnZTxURGVjaXNpb24+PiA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZWFkPER1cmFibGVDaGF0TWVzc2FnZTxURGVjaXNpb24+PignUkVUVVJOIERPQ1VNRU5UKFwibWVzc2FnZXNcIiwgQG1lc3NhZ2VJZCknLCB7bWVzc2FnZUlkfSk7XG4gIGlmKCFtZXNzYWdlIHx8IG1lc3NhZ2UuY29udmVyc2F0aW9uSWQgIT09IGNvbnZlcnNhdGlvbklkIHx8IG1lc3NhZ2UuY2hhdFNjaGVtYVZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICByZXR1cm4gbWVzc2FnZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEdXJhYmxlTWVzc2FnZVBlcnNpc3RlbmNlID0gPFREZWNpc2lvbj4oaG9va3M6IER1cmFibGVNZXNzYWdlSG9va3M8VERlY2lzaW9uPikgPT4ge1xuICBjb25zdCBoYXNoID0gaG9va3MuaGFzaCB8fCBkZWZhdWx0SGFzaDtcbiAgY29uc3Qgbm93ID0gaG9va3Mubm93IHx8IERhdGUubm93O1xuICBjb25zdCB1dWlkID0gaG9va3MudXVpZCB8fCByYW5kb21VVUlEO1xuICBjb25zdCBhdXRob3JpemUgPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nLCBwdXJwb3NlOiAnaGlzdG9yeScgfCAnc2VuZCcgPSAnaGlzdG9yeScpID0+IHtcbiAgICBjb25zdCBtZW1iZXJzaGlwID0gYXdhaXQgaG9va3MuYXV0aG9yaXplTWVtYmVyc2hpcChyZWFkLCBob29rcy5pZGVudGl0eSwgY29udmVyc2F0aW9uSWQsIHB1cnBvc2UpO1xuICAgIGNvbnN0IGxlZ2FjeSA9IGF3YWl0IHJlYWQ8Ym9vbGVhbj4oYFJFVFVSTiBGSVJTVChGT1IgbWVzc2FnZSBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIG1lc3NhZ2UuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkXG4gICAgICAgIEFORCAobWVzc2FnZS5jaGF0U2NoZW1hVmVyc2lvbiAhPSAxIE9SICFJU19OVU1CRVIobWVzc2FnZS5zZXF1ZW5jZSkgT1IgbWVzc2FnZS5zZXF1ZW5jZSA8IDEpXG4gICAgICBMSU1JVCAxIFJFVFVSTiB0cnVlKWAsIHtjb252ZXJzYXRpb25JZH0pO1xuICAgIGlmKGxlZ2FjeSA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignY29uZmxpY3QnKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbWJlcnNoaXA7XG4gIH07XG4gIGNvbnN0IHJlY2VpcHQgPSBhc3luYyA8VD4oXG4gICAgcmVhZDogQ2hhdFF1ZXJ5LCBhY3Rpb246IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZywga2V5OiBzdHJpbmcsIHBheWxvYWQ6IHVua25vd25cbiAgKSA9PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gaGFzaChbYWN0aW9uLCBjb252ZXJzYXRpb25JZCwgaG9va3MuaWRlbnRpdHkucGVyc29uYUlkLCBrZXldKTtcbiAgICBjb25zdCBwYXlsb2FkSGFzaCA9IGhhc2gocGF5bG9hZCk7XG4gICAgY29uc3QgcmVjb3JkID0gYXdhaXQgcmVhZDx7cmVhZG9ubHkgcGF5bG9hZEhhc2g6IHN0cmluZzsgcmVhZG9ubHkgcmVzdWx0OiBUOyByZWFkb25seSB1c2VySWQ6IHN0cmluZ30+KFxuICAgICAgJ1JFVFVSTiBET0NVTUVOVChcImNoYXRNZXNzYWdlUmVxdWVzdHNcIiwgQGtleSknLCB7a2V5OiByZXF1ZXN0SWR9KTtcbiAgICBpZihyZWNvcmQgJiYgKHJlY29yZC5wYXlsb2FkSGFzaCAhPT0gcGF5bG9hZEhhc2ggfHwgcmVjb3JkLnVzZXJJZCAhPT0gaG9va3MuaWRlbnRpdHkudXNlcklkKSkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignY29uZmxpY3QnKTtcbiAgICB9XG4gICAgcmV0dXJuIHtwcmlvcjogcmVjb3JkPy5yZXN1bHQsIHNhdmU6IChyZXN1bHQ6IFQpID0+IHJlYWQ8Ym9vbGVhbj4oXG4gICAgICAnSU5TRVJUIEByZWNvcmQgSU4gY2hhdE1lc3NhZ2VSZXF1ZXN0cyBSRVRVUk4gdHJ1ZScsIHtyZWNvcmQ6IHtfa2V5OiByZXF1ZXN0SWQsIGFkZGVkOiBub3coKSwgY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHBheWxvYWRIYXNoLCBwZXJzb25hSWQ6IGhvb2tzLmlkZW50aXR5LnBlcnNvbmFJZCwgcmVzdWx0LCB1c2VySWQ6IGhvb2tzLmlkZW50aXR5LnVzZXJJZH19KX07XG4gIH07XG4gIGNvbnN0IHJhdGVMaW1pdCA9IGFzeW5jIChyZWFkOiBDaGF0UXVlcnksIGFjdGlvbjogc3RyaW5nLCBsaW1pdDogbnVtYmVyLCBpbnRlcnZhbCA9IDYwMDAwKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qga2V5ID0gaGFzaChbaG9va3MuaWRlbnRpdHkudXNlcklkLCBob29rcy5pZGVudGl0eS5wZXJzb25hSWQsIGFjdGlvbiwgTWF0aC5mbG9vcihub3coKSAvIGludGVydmFsKV0pO1xuICAgIGNvbnN0IGFsbG93ZWQgPSBhd2FpdCByZWFkPGJvb2xlYW4+KGBMRVQgYnVja2V0ID0gRE9DVU1FTlQoJ2NoYXRSYXRlTGltaXRzJywgQGtleSlcbiAgICAgIEZJTFRFUiBidWNrZXQgPT0gbnVsbCBPUiBidWNrZXQuY291bnQgPCBAbGltaXRcbiAgICAgIFVQU0VSVCB7X2tleTogQGtleX0gSU5TRVJUIHtfa2V5OiBAa2V5LCBjb3VudDogMSwgcGVyc29uYUlkOiBAcGVyc29uYUlkLCB1c2VySWQ6IEB1c2VySWR9XG4gICAgICBVUERBVEUge2NvdW50OiBPTEQuY291bnQgKyAxLCBwZXJzb25hSWQ6IEBwZXJzb25hSWQsIHVzZXJJZDogQHVzZXJJZH1cbiAgICAgIElOIGNoYXRSYXRlTGltaXRzIFJFVFVSTiB0cnVlYCwge2tleSwgbGltaXQsIHBlcnNvbmFJZDogaG9va3MuaWRlbnRpdHkucGVyc29uYUlkLCB1c2VySWQ6IGhvb2tzLmlkZW50aXR5LnVzZXJJZH0pO1xuICAgIGlmKGFsbG93ZWQgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3JhdGVfbGltaXRlZCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcnVuID0gPFQ+KG9wZXJhdGlvbjogKHJlYWQ6IENoYXRRdWVyeSkgPT4gUHJvbWlzZTxUPiwgd3JpdGUgPSB0cnVlKTogUHJvbWlzZTxUPiA9PiBob29rcy5ydW4oYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBob29rcy5hdXRob3JpemVJZGVudGl0eShyZWFkLCBob29rcy5pZGVudGl0eSk7XG4gICAgcmV0dXJuIG9wZXJhdGlvbihyZWFkKTtcbiAgfSwgd3JpdGUpO1xuICBjb25zdCBzZW5kTWVzc2FnZSA9IChpbnB1dDogRHVyYWJsZVNlbmRNZXNzYWdlSW5wdXQpOiBQcm9taXNlPER1cmFibGVNZXNzYWdlQWNrbm93bGVkZ2VtZW50PiA9PiBydW4oYXN5bmMgKHJlYWQpID0+IHtcbiAgICByZXF1aXJlVmFsaWQoQm9vbGVhbihpbnB1dCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5jb252ZXJzYXRpb25JZCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5jbGllbnRNZXNzYWdlSWQpXG4gICAgICAmJiBpbnB1dC5zZW5kZXJQZXJzb25hSWQgPT09IGhvb2tzLmlkZW50aXR5LnBlcnNvbmFJZCAmJiB2YWxpZFRleHQoaW5wdXQuY29udGVudClcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoaW5wdXQuYXR0YWNobWVudElkcykgJiYgaW5wdXQuYXR0YWNobWVudElkcy5sZW5ndGggPD0gNFxuICAgICAgJiYgaW5wdXQuYXR0YWNobWVudElkcy5ldmVyeShpc0NoYXRJZGVudGlmaWVyKSAmJiBuZXcgU2V0KGlucHV0LmF0dGFjaG1lbnRJZHMpLnNpemUgPT09IGlucHV0LmF0dGFjaG1lbnRJZHMubGVuZ3RoXG4gICAgICAmJiAoaW5wdXQuY29udGVudC50cmltKCkubGVuZ3RoID4gMCB8fCBpbnB1dC5hdHRhY2htZW50SWRzLmxlbmd0aCA+IDApXG4gICAgICAmJiAoaW5wdXQucmVwbHlUb01lc3NhZ2VJZCA9PT0gdW5kZWZpbmVkIHx8IGlzQ2hhdElkZW50aWZpZXIoaW5wdXQucmVwbHlUb01lc3NhZ2VJZCkpKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxEdXJhYmxlTWVzc2FnZUFja25vd2xlZGdlbWVudD4oXG4gICAgICByZWFkLCAnc2VuZCcsIGlucHV0LmNvbnZlcnNhdGlvbklkLCBpbnB1dC5jbGllbnRNZXNzYWdlSWQsIGlucHV0KTtcbiAgICBpZihyZXF1ZXN0LnByaW9yKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdC5wcmlvcjtcbiAgICB9XG4gICAgY29uc3QgbWVtYmVyc2hpcCA9IGF3YWl0IGF1dGhvcml6ZShyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCwgJ3NlbmQnKTtcbiAgICBhd2FpdCByYXRlTGltaXQocmVhZCwgJ3NlbmQnLCA2MCk7XG4gICAgY29uc3QgYXR0YWNobWVudHM6IER1cmFibGVDaGF0QXR0YWNobWVudFtdID0gW107XG4gICAgZm9yKGNvbnN0IGltYWdlSWQgb2YgaW5wdXQuYXR0YWNobWVudElkcykge1xuICAgICAgYXR0YWNobWVudHMucHVzaChhd2FpdCBob29rcy5hdXRob3JpemVBdHRhY2htZW50KHJlYWQsIGltYWdlSWQpKTtcbiAgICB9XG4gICAgaWYoaW5wdXQucmVwbHlUb01lc3NhZ2VJZCkge1xuICAgICAgY29uc3QgcXVvdGVkID0gYXdhaXQgcmVhZER1cmFibGVNZXNzYWdlPFREZWNpc2lvbj4ocmVhZCwgaW5wdXQuY29udmVyc2F0aW9uSWQsIGlucHV0LnJlcGx5VG9NZXNzYWdlSWQpO1xuICAgICAgYXdhaXQgaG9va3MuYXV0aG9yaXplTWVzc2FnZVZpc2libGUocmVhZCwgaG9va3MuaWRlbnRpdHksIHF1b3RlZCwgbWVtYmVyc2hpcCk7XG4gICAgICBpZihxdW90ZWQuZGVsZXRlZCB8fCBxdW90ZWQubW9iaWxlUGxhdGZvcm1EaXNwb3NpdGlvbiAhPT0gJ2FsbG93ZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB0aW1lc3RhbXAgPSBub3coKTtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IGF3YWl0IHJlYWQ8bnVtYmVyPihgRk9SIGNvbnZlcnNhdGlvbiBJTiBjb252ZXJzYXRpb25zIEZJTFRFUiBjb252ZXJzYXRpb24uX2tleSA9PSBAaWRcbiAgICAgIEFORCBjb252ZXJzYXRpb24uY2hhdFNjaGVtYVZlcnNpb24gPT0gMSBBTkQgY29udmVyc2F0aW9uLnN0YXRlID09ICdhY3RpdmUnXG4gICAgICBBTkQgSVNfTlVNQkVSKGNvbnZlcnNhdGlvbi5sYXN0U2VxdWVuY2UpIEFORCBjb252ZXJzYXRpb24ubGFzdFNlcXVlbmNlIDwgOTAwNzE5OTI1NDc0MDk5MVxuICAgICAgVVBEQVRFIGNvbnZlcnNhdGlvbiBXSVRIIHtsYXN0U2VxdWVuY2U6IGNvbnZlcnNhdGlvbi5sYXN0U2VxdWVuY2UgKyAxLCBtb2RpZmllZDogQG5vd31cbiAgICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FVy5sYXN0U2VxdWVuY2VgLCB7aWQ6IGlucHV0LmNvbnZlcnNhdGlvbklkLCBub3c6IHRpbWVzdGFtcH0pO1xuICAgIGlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzZXF1ZW5jZSkgfHwgTnVtYmVyKHNlcXVlbmNlKSA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHV1aWQoKTtcbiAgICBjb25zdCBjb250ZW50VmVyc2lvbiA9IGhhc2goW21lc3NhZ2VJZCwgMSwgaW5wdXQuY29udGVudF0pO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSBhd2FpdCBob29rcy5jbGFzc2lmeUNvbnRlbnQoe2NvbnRlbnQ6IGlucHV0LmNvbnRlbnQgfHwgJyAnLCBjb250ZW50VmVyc2lvbn0pO1xuICAgIGNvbnN0IHJlY29yZDogRHVyYWJsZUNoYXRNZXNzYWdlPFREZWNpc2lvbj4gPSB7X2tleTogbWVzc2FnZUlkLCBhZGRlZDogdGltZXN0YW1wLFxuICAgICAgYXR0YWNobWVudElkczogaW5wdXQuYXR0YWNobWVudElkcywgYXR0YWNobWVudHMsIGNoYXRTY2hlbWFWZXJzaW9uOiAxLCBjbGllbnRNZXNzYWdlSWQ6IGlucHV0LmNsaWVudE1lc3NhZ2VJZCxcbiAgICAgIGNvbnRlbnQ6IGlucHV0LmNvbnRlbnQsIGNvbnRlbnRSZXZpc2lvbjogMSwgY29udmVyc2F0aW9uSWQ6IGlucHV0LmNvbnZlcnNhdGlvbklkLCBkZWxldGVkOiBmYWxzZSxcbiAgICAgIG1vYmlsZUNvbnRlbnRWZXJzaW9uOiBjb250ZW50VmVyc2lvbiwgbW9iaWxlRGVjaXNpb246IHByb2plY3Rpb24uZGVjaXNpb24sXG4gICAgICBtb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uOiBwcm9qZWN0aW9uLnBsYXRmb3JtRGlzcG9zaXRpb24gfHwgJ2FsbG93ZWQnLCBtb2RpZmllZDogdGltZXN0YW1wLFxuICAgICAgcmVwbHlUb01lc3NhZ2VJZDogaW5wdXQucmVwbHlUb01lc3NhZ2VJZCwgcmV2aXNpb246IDEsIHNlbmRlclBlcnNvbmFJZDogaG9va3MuaWRlbnRpdHkucGVyc29uYUlkLFxuICAgICAgc2VxdWVuY2U6IHNlcXVlbmNlISwgdXNlcklkOiBob29rcy5pZGVudGl0eS51c2VySWR9O1xuICAgIGlmKGF3YWl0IHJlYWQ8Ym9vbGVhbj4oJ0lOU0VSVCBAcmVjb3JkIElOIG1lc3NhZ2VzIFJFVFVSTiB0cnVlJywge3JlY29yZH0pICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCd1bmF2YWlsYWJsZScpO1xuICAgIH1cbiAgICBhd2FpdCBob29rcy5hcHBlbmRFdmVudChyZWFkLCB7YWN0b3JQZXJzb25hSWQ6IGhvb2tzLmlkZW50aXR5LnBlcnNvbmFJZCwgY29udmVyc2F0aW9uSWQ6IGlucHV0LmNvbnZlcnNhdGlvbklkLFxuICAgICAga2luZDogJ21lc3NhZ2UuY2hhbmdlZCcsIG1lbWJlcnNoaXBFcG9jaDogbWVtYmVyc2hpcC5lcG9jaCwgcmVzb3VyY2VJZDogbWVzc2FnZUlkLCByZXZpc2lvbjogMX0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtjbGllbnRNZXNzYWdlSWQ6IGlucHV0LmNsaWVudE1lc3NhZ2VJZCwgbWVzc2FnZUlkLCByZXZpc2lvbjogMSwgc2VxdWVuY2U6IHNlcXVlbmNlIX07XG4gICAgaWYoYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCkgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuICBjb25zdCBtdXRhdGVNZXNzYWdlID0gKFxuICAgIGlucHV0OiBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCB8IER1cmFibGVEZWxldGVNZXNzYWdlSW5wdXQsIHJlbW92ZTogYm9vbGVhblxuICApOiBQcm9taXNlPER1cmFibGVNZXNzYWdlTXV0YXRpb25SZXN1bHQ+ID0+IHJ1bihhc3luYyAocmVhZCkgPT4ge1xuICAgIHJlcXVpcmVWYWxpZChCb29sZWFuKGlucHV0KSAmJiBpc0NoYXRJZGVudGlmaWVyKGlucHV0LmNvbnZlcnNhdGlvbklkKSAmJiBpc0NoYXRJZGVudGlmaWVyKGlucHV0Lm1lc3NhZ2VJZClcbiAgICAgICYmIGlzQ2hhdElkZW50aWZpZXIoaW5wdXQuaWRlbXBvdGVuY3lLZXkpICYmIE51bWJlci5pc1NhZmVJbnRlZ2VyKGlucHV0LmV4cGVjdGVkUmV2aXNpb24pXG4gICAgICAmJiBpbnB1dC5leHBlY3RlZFJldmlzaW9uID49IDEgJiYgKHJlbW92ZSB8fCAoJ2NvbnRlbnQnIGluIGlucHV0ICYmIHZhbGlkVGV4dChpbnB1dC5jb250ZW50KSkpKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxEdXJhYmxlTWVzc2FnZU11dGF0aW9uUmVzdWx0PihyZWFkLCByZW1vdmUgPyAnZGVsZXRlJyA6ICdlZGl0JyxcbiAgICAgIGlucHV0LmNvbnZlcnNhdGlvbklkLCBpbnB1dC5pZGVtcG90ZW5jeUtleSwgaW5wdXQpO1xuICAgIGlmKHJlcXVlc3QucHJpb3IpIHtcbiAgICAgIHJldHVybiByZXF1ZXN0LnByaW9yO1xuICAgIH1cbiAgICBjb25zdCBtZW1iZXJzaGlwID0gYXdhaXQgYXV0aG9yaXplKHJlYWQsIGlucHV0LmNvbnZlcnNhdGlvbklkLCAnc2VuZCcpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZWFkRHVyYWJsZU1lc3NhZ2U8VERlY2lzaW9uPihyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCwgaW5wdXQubWVzc2FnZUlkKTtcbiAgICBpZihtZXNzYWdlLnNlbmRlclBlcnNvbmFJZCAhPT0gaG9va3MuaWRlbnRpdHkucGVyc29uYUlkIHx8IG1lc3NhZ2UudXNlcklkICE9PSBob29rcy5pZGVudGl0eS51c2VySWRcbiAgICAgIHx8IG1lc3NhZ2Uuc2VxdWVuY2UgPCBtZW1iZXJzaGlwLmpvaW5TZXF1ZW5jZSB8fCBtZXNzYWdlLmRlbGV0ZWQgfHwgbWVzc2FnZS5tb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uICE9PSAnYWxsb3dlZCcpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICBpZihtZXNzYWdlLnJldmlzaW9uICE9PSBpbnB1dC5leHBlY3RlZFJldmlzaW9uIHx8ICghcmVtb3ZlICYmIG5vdygpIC0gbWVzc2FnZS5hZGRlZCA+IDE1ICogNjAwMDApKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdjb25mbGljdCcpO1xuICAgIH1cbiAgICBhd2FpdCByYXRlTGltaXQocmVhZCwgcmVtb3ZlID8gJ2RlbGV0ZScgOiAnZWRpdCcsIDYwKTtcbiAgICBjb25zdCBjb250ZW50ID0gIXJlbW92ZSAmJiAnY29udGVudCcgaW4gaW5wdXQgPyBpbnB1dC5jb250ZW50IDogJyc7XG4gICAgY29uc3QgcmV2aXNpb24gPSBtZXNzYWdlLnJldmlzaW9uICsgMTtcbiAgICBjb25zdCBjb250ZW50UmV2aXNpb24gPSBtZXNzYWdlLmNvbnRlbnRSZXZpc2lvbiArIDE7XG4gICAgY29uc3QgY29udGVudFZlcnNpb24gPSBoYXNoKFttZXNzYWdlLl9rZXksIGNvbnRlbnRSZXZpc2lvbiwgY29udGVudF0pO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSBhd2FpdCBob29rcy5jbGFzc2lmeUNvbnRlbnQoe2NvbnRlbnQ6IGNvbnRlbnQgfHwgJyAnLCBjb250ZW50VmVyc2lvbn0pO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCByZWFkPGJvb2xlYW4+KGBGT1IgY3VycmVudCBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIGN1cnJlbnQuX2tleSA9PSBAaWQgQU5EIGN1cnJlbnQucmV2aXNpb24gPT0gQGV4cGVjdGVkUmV2aXNpb25cbiAgICAgIFVQREFURSBjdXJyZW50IFdJVEgge2NvbnRlbnQ6IEBjb250ZW50LCBjb250ZW50UmV2aXNpb246IEBjb250ZW50UmV2aXNpb24sIGRlbGV0ZWQ6IEBkZWxldGVkLFxuICAgICAgICBhdHRhY2htZW50SWRzOiBAYXR0YWNobWVudElkcywgYXR0YWNobWVudHM6IEBhdHRhY2htZW50cywgcmVwbHlUb01lc3NhZ2VJZDogQHJlcGx5LFxuICAgICAgICBtb2JpbGVDb250ZW50VmVyc2lvbjogQGNvbnRlbnRWZXJzaW9uLCBtb2JpbGVEZWNpc2lvbjogQGRlY2lzaW9uLFxuICAgICAgICBtb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uOiBAcGxhdGZvcm1EaXNwb3NpdGlvbiwgbW9kaWZpZWQ6IEBub3csIHJldmlzaW9uOiBAcmV2aXNpb259XG4gICAgICBJTiBtZXNzYWdlcyBSRVRVUk4gdHJ1ZWAsIHthdHRhY2htZW50SWRzOiByZW1vdmUgPyBbXSA6IG1lc3NhZ2UuYXR0YWNobWVudElkcyxcbiAgICAgIGF0dGFjaG1lbnRzOiByZW1vdmUgPyBbXSA6IG1lc3NhZ2UuYXR0YWNobWVudHMsIGNvbnRlbnQsIGNvbnRlbnRSZXZpc2lvbiwgY29udGVudFZlcnNpb24sXG4gICAgICBkZWNpc2lvbjogcHJvamVjdGlvbi5kZWNpc2lvbiwgZGVsZXRlZDogcmVtb3ZlLCBleHBlY3RlZFJldmlzaW9uOiBpbnB1dC5leHBlY3RlZFJldmlzaW9uLCBpZDogbWVzc2FnZS5fa2V5LFxuICAgICAgbm93OiBub3coKSwgcGxhdGZvcm1EaXNwb3NpdGlvbjogcHJvamVjdGlvbi5wbGF0Zm9ybURpc3Bvc2l0aW9uIHx8ICdhbGxvd2VkJyxcbiAgICAgIHJlcGx5OiByZW1vdmUgPyBudWxsIDogbWVzc2FnZS5yZXBseVRvTWVzc2FnZUlkIHx8IG51bGwsIHJldmlzaW9ufSk7XG4gICAgaWYodXBkYXRlZCAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignY29uZmxpY3QnKTtcbiAgICB9XG4gICAgYXdhaXQgaG9va3MuYXBwZW5kRXZlbnQocmVhZCwge2FjdG9yUGVyc29uYUlkOiBob29rcy5pZGVudGl0eS5wZXJzb25hSWQsIGNvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCxcbiAgICAgIGtpbmQ6ICdtZXNzYWdlLmNoYW5nZWQnLCBtZW1iZXJzaGlwRXBvY2g6IG1lbWJlcnNoaXAuZXBvY2gsIHJlc291cmNlSWQ6IG1lc3NhZ2UuX2tleSwgcmV2aXNpb259KTtcbiAgICBjb25zdCByZXN1bHQgPSB7bWVzc2FnZUlkOiBtZXNzYWdlLl9rZXksIHJldmlzaW9uLCBzZXF1ZW5jZTogbWVzc2FnZS5zZXF1ZW5jZX07XG4gICAgaWYoYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCkgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuICByZXR1cm4ge2F1dGhvcml6ZSwgZGVsZXRlTWVzc2FnZTogKGlucHV0OiBEdXJhYmxlRGVsZXRlTWVzc2FnZUlucHV0KSA9PiBtdXRhdGVNZXNzYWdlKGlucHV0LCB0cnVlKSxcbiAgICBlZGl0TWVzc2FnZTogKGlucHV0OiBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCkgPT4gbXV0YXRlTWVzc2FnZShpbnB1dCwgZmFsc2UpLCByYXRlTGltaXQsIHJlY2VpcHQsIHJ1biwgc2VuZE1lc3NhZ2V9O1xufTtcblxuZXhwb3J0IHR5cGUgRHVyYWJsZU1lc3NhZ2VQZXJzaXN0ZW5jZTxURGVjaXNpb24gPSB1bmtub3duPiA9XG4gIFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUR1cmFibGVNZXNzYWdlUGVyc2lzdGVuY2U8VERlY2lzaW9uPj47XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInJhbmRvbVVVSUQiLCJDaGF0RXJyb3IiLCJpc0NoYXRJZGVudGlmaWVyIiwiZGVmYXVsdEhhc2giLCJ2YWx1ZSIsInVwZGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJkaWdlc3QiLCJ2YWxpZFRleHQiLCJjb250ZW50IiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwidGVzdCIsInJlcXVpcmVWYWxpZCIsInZhbGlkIiwicmVhZER1cmFibGVNZXNzYWdlIiwicmVhZCIsImNvbnZlcnNhdGlvbklkIiwibWVzc2FnZUlkIiwibWVzc2FnZSIsImNoYXRTY2hlbWFWZXJzaW9uIiwiY3JlYXRlRHVyYWJsZU1lc3NhZ2VQZXJzaXN0ZW5jZSIsImhvb2tzIiwiaGFzaCIsIm5vdyIsIkRhdGUiLCJ1dWlkIiwiYXV0aG9yaXplIiwicHVycG9zZSIsIm1lbWJlcnNoaXAiLCJhdXRob3JpemVNZW1iZXJzaGlwIiwiaWRlbnRpdHkiLCJsZWdhY3kiLCJyZWNlaXB0IiwiYWN0aW9uIiwia2V5IiwicGF5bG9hZCIsInJlcXVlc3RJZCIsInBlcnNvbmFJZCIsInBheWxvYWRIYXNoIiwicmVjb3JkIiwidXNlcklkIiwicHJpb3IiLCJyZXN1bHQiLCJzYXZlIiwiX2tleSIsImFkZGVkIiwicmF0ZUxpbWl0IiwibGltaXQiLCJpbnRlcnZhbCIsIk1hdGgiLCJmbG9vciIsImFsbG93ZWQiLCJydW4iLCJvcGVyYXRpb24iLCJ3cml0ZSIsImF1dGhvcml6ZUlkZW50aXR5Iiwic2VuZE1lc3NhZ2UiLCJpbnB1dCIsIkJvb2xlYW4iLCJjbGllbnRNZXNzYWdlSWQiLCJzZW5kZXJQZXJzb25hSWQiLCJpc0FycmF5IiwiYXR0YWNobWVudElkcyIsImV2ZXJ5IiwiU2V0Iiwic2l6ZSIsInRyaW0iLCJyZXBseVRvTWVzc2FnZUlkIiwidW5kZWZpbmVkIiwicmVxdWVzdCIsImF0dGFjaG1lbnRzIiwiaW1hZ2VJZCIsInB1c2giLCJhdXRob3JpemVBdHRhY2htZW50IiwicXVvdGVkIiwiYXV0aG9yaXplTWVzc2FnZVZpc2libGUiLCJkZWxldGVkIiwibW9iaWxlUGxhdGZvcm1EaXNwb3NpdGlvbiIsInRpbWVzdGFtcCIsInNlcXVlbmNlIiwiaWQiLCJOdW1iZXIiLCJpc1NhZmVJbnRlZ2VyIiwiY29udGVudFZlcnNpb24iLCJwcm9qZWN0aW9uIiwiY2xhc3NpZnlDb250ZW50IiwiY29udGVudFJldmlzaW9uIiwibW9iaWxlQ29udGVudFZlcnNpb24iLCJtb2JpbGVEZWNpc2lvbiIsImRlY2lzaW9uIiwicGxhdGZvcm1EaXNwb3NpdGlvbiIsIm1vZGlmaWVkIiwicmV2aXNpb24iLCJhcHBlbmRFdmVudCIsImFjdG9yUGVyc29uYUlkIiwia2luZCIsIm1lbWJlcnNoaXBFcG9jaCIsImVwb2NoIiwicmVzb3VyY2VJZCIsIm11dGF0ZU1lc3NhZ2UiLCJyZW1vdmUiLCJpZGVtcG90ZW5jeUtleSIsImV4cGVjdGVkUmV2aXNpb24iLCJqb2luU2VxdWVuY2UiLCJ1cGRhdGVkIiwicmVwbHkiLCJkZWxldGVNZXNzYWdlIiwiZWRpdE1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLDJHQUEyRyxHQUMzRyxTQUFRQSxVQUFVLEVBQUVDLFVBQVUsUUFBTyxjQUFjO0FBRW5ELFNBQVFDLFNBQVMsUUFBTyxjQUFjO0FBQ3RDLFNBQVFDLGdCQUFnQixRQUFPLGtCQUFrQjtBQVFqRCxNQUFNQyxjQUFjLENBQUNDLFFBQTJCTCxXQUFXLFVBQVVNLE1BQU0sQ0FBQ0MsS0FBS0MsU0FBUyxDQUFDSCxRQUFRSSxNQUFNLENBQUM7QUFDMUcsTUFBTUMsWUFBWSxDQUFDQyxVQUF3QyxPQUFPQSxZQUFZLFlBQ3pFQyxNQUFNQyxJQUFJLENBQUNGLFNBQVNHLE1BQU0sSUFBSSxRQUM5QixDQUFDLGdGQUFnRkMsSUFBSSxDQUFDSjtBQUMzRixNQUFNSyxlQUFlLENBQUNDO0lBQ3BCLElBQUcsQ0FBQ0EsT0FBTztRQUNULE1BQU0sSUFBSWYsVUFBVTtJQUN0QjtBQUNGO0FBRUEsT0FBTyxNQUFNZ0IscUJBQXFCLE9BQ2hDQyxNQUFpQkMsZ0JBQXdCQztJQUV6QyxNQUFNQyxVQUFVLE1BQU1ILEtBQW9DLDJDQUEyQztRQUFDRTtJQUFTO0lBQy9HLElBQUcsQ0FBQ0MsV0FBV0EsUUFBUUYsY0FBYyxLQUFLQSxrQkFBa0JFLFFBQVFDLGlCQUFpQixLQUFLLEdBQUc7UUFDM0YsTUFBTSxJQUFJckIsVUFBVTtJQUN0QjtJQUNBLE9BQU9vQjtBQUNULEVBQUU7QUFFRixPQUFPLE1BQU1FLGtDQUFrQyxDQUFZQztJQUN6RCxNQUFNQyxPQUFPRCxNQUFNQyxJQUFJLElBQUl0QjtJQUMzQixNQUFNdUIsTUFBTUYsTUFBTUUsR0FBRyxJQUFJQyxLQUFLRCxHQUFHO0lBQ2pDLE1BQU1FLE9BQU9KLE1BQU1JLElBQUksSUFBSTVCO0lBQzNCLE1BQU02QixZQUFZLE9BQU9YLE1BQWlCQyxnQkFBd0JXLFVBQThCLFNBQVM7UUFDdkcsTUFBTUMsYUFBYSxNQUFNUCxNQUFNUSxtQkFBbUIsQ0FBQ2QsTUFBTU0sTUFBTVMsUUFBUSxFQUFFZCxnQkFBZ0JXO1FBQ3pGLE1BQU1JLFNBQVMsTUFBTWhCLEtBQWMsQ0FBQzs7OzBCQUdkLENBQUMsRUFBRTtZQUFDQztRQUFjO1FBQ3hDLElBQUdlLFdBQVcsTUFBTTtZQUNsQixNQUFNLElBQUlqQyxVQUFVO1FBQ3RCO1FBQ0EsT0FBTzhCO0lBQ1Q7SUFDQSxNQUFNSSxVQUFVLE9BQ2RqQixNQUFpQmtCLFFBQWdCakIsZ0JBQXdCa0IsS0FBYUM7UUFFdEUsTUFBTUMsWUFBWWQsS0FBSztZQUFDVztZQUFRakI7WUFBZ0JLLE1BQU1TLFFBQVEsQ0FBQ08sU0FBUztZQUFFSDtTQUFJO1FBQzlFLE1BQU1JLGNBQWNoQixLQUFLYTtRQUN6QixNQUFNSSxTQUFTLE1BQU14QixLQUNuQixnREFBZ0Q7WUFBQ21CLEtBQUtFO1FBQVM7UUFDakUsSUFBR0csVUFBV0EsQ0FBQUEsT0FBT0QsV0FBVyxLQUFLQSxlQUFlQyxPQUFPQyxNQUFNLEtBQUtuQixNQUFNUyxRQUFRLENBQUNVLE1BQU0sQUFBRCxHQUFJO1lBQzVGLE1BQU0sSUFBSTFDLFVBQVU7UUFDdEI7UUFDQSxPQUFPO1lBQUMyQyxPQUFPRixRQUFRRztZQUFRQyxNQUFNLENBQUNELFNBQWMzQixLQUNsRCxxREFBcUQ7b0JBQUN3QixRQUFRO3dCQUFDSyxNQUFNUjt3QkFBV1MsT0FBT3RCO3dCQUFPUDt3QkFDNUZzQjt3QkFBYUQsV0FBV2hCLE1BQU1TLFFBQVEsQ0FBQ08sU0FBUzt3QkFBRUs7d0JBQVFGLFFBQVFuQixNQUFNUyxRQUFRLENBQUNVLE1BQU07b0JBQUE7Z0JBQUM7UUFBRTtJQUNoRztJQUNBLE1BQU1NLFlBQVksT0FBTy9CLE1BQWlCa0IsUUFBZ0JjLE9BQWVDLFdBQVcsS0FBSztRQUN2RixNQUFNZCxNQUFNWixLQUFLO1lBQUNELE1BQU1TLFFBQVEsQ0FBQ1UsTUFBTTtZQUFFbkIsTUFBTVMsUUFBUSxDQUFDTyxTQUFTO1lBQUVKO1lBQVFnQixLQUFLQyxLQUFLLENBQUMzQixRQUFReUI7U0FBVTtRQUN4RyxNQUFNRyxVQUFVLE1BQU1wQyxLQUFjLENBQUM7Ozs7bUNBSU4sQ0FBQyxFQUFFO1lBQUNtQjtZQUFLYTtZQUFPVixXQUFXaEIsTUFBTVMsUUFBUSxDQUFDTyxTQUFTO1lBQUVHLFFBQVFuQixNQUFNUyxRQUFRLENBQUNVLE1BQU07UUFBQTtRQUNqSCxJQUFHVyxZQUFZLE1BQU07WUFDbkIsTUFBTSxJQUFJckQsVUFBVTtRQUN0QjtJQUNGO0lBQ0EsTUFBTXNELE1BQU0sQ0FBSUMsV0FBNENDLFFBQVEsSUFBSSxHQUFpQmpDLE1BQU0rQixHQUFHLENBQUMsT0FBT3JDO1lBQ3hHLE1BQU1NLE1BQU1rQyxpQkFBaUIsQ0FBQ3hDLE1BQU1NLE1BQU1TLFFBQVE7WUFDbEQsT0FBT3VCLFVBQVV0QztRQUNuQixHQUFHdUM7SUFDSCxNQUFNRSxjQUFjLENBQUNDLFFBQTJFTCxJQUFJLE9BQU9yQztZQUN6R0gsYUFBYThDLFFBQVFELFVBQVUxRCxpQkFBaUIwRCxNQUFNekMsY0FBYyxLQUFLakIsaUJBQWlCMEQsTUFBTUUsZUFBZSxLQUMxR0YsTUFBTUcsZUFBZSxLQUFLdkMsTUFBTVMsUUFBUSxDQUFDTyxTQUFTLElBQUkvQixVQUFVbUQsTUFBTWxELE9BQU8sS0FDN0VDLE1BQU1xRCxPQUFPLENBQUNKLE1BQU1LLGFBQWEsS0FBS0wsTUFBTUssYUFBYSxDQUFDcEQsTUFBTSxJQUFJLEtBQ3BFK0MsTUFBTUssYUFBYSxDQUFDQyxLQUFLLENBQUNoRSxxQkFBcUIsSUFBSWlFLElBQUlQLE1BQU1LLGFBQWEsRUFBRUcsSUFBSSxLQUFLUixNQUFNSyxhQUFhLENBQUNwRCxNQUFNLElBQzlHK0MsQ0FBQUEsTUFBTWxELE9BQU8sQ0FBQzJELElBQUksR0FBR3hELE1BQU0sR0FBRyxLQUFLK0MsTUFBTUssYUFBYSxDQUFDcEQsTUFBTSxHQUFHLENBQUEsS0FDaEUrQyxDQUFBQSxNQUFNVSxnQkFBZ0IsS0FBS0MsYUFBYXJFLGlCQUFpQjBELE1BQU1VLGdCQUFnQixDQUFBO1lBQ3JGLE1BQU1FLFVBQVUsTUFBTXJDLFFBQ3BCakIsTUFBTSxRQUFRMEMsTUFBTXpDLGNBQWMsRUFBRXlDLE1BQU1FLGVBQWUsRUFBRUY7WUFDN0QsSUFBR1ksUUFBUTVCLEtBQUssRUFBRTtnQkFDaEIsT0FBTzRCLFFBQVE1QixLQUFLO1lBQ3RCO1lBQ0EsTUFBTWIsYUFBYSxNQUFNRixVQUFVWCxNQUFNMEMsTUFBTXpDLGNBQWMsRUFBRTtZQUMvRCxNQUFNOEIsVUFBVS9CLE1BQU0sUUFBUTtZQUM5QixNQUFNdUQsY0FBdUMsRUFBRTtZQUMvQyxLQUFJLE1BQU1DLFdBQVdkLE1BQU1LLGFBQWEsQ0FBRTtnQkFDeENRLFlBQVlFLElBQUksQ0FBQyxNQUFNbkQsTUFBTW9ELG1CQUFtQixDQUFDMUQsTUFBTXdEO1lBQ3pEO1lBQ0EsSUFBR2QsTUFBTVUsZ0JBQWdCLEVBQUU7Z0JBQ3pCLE1BQU1PLFNBQVMsTUFBTTVELG1CQUE4QkMsTUFBTTBDLE1BQU16QyxjQUFjLEVBQUV5QyxNQUFNVSxnQkFBZ0I7Z0JBQ3JHLE1BQU05QyxNQUFNc0QsdUJBQXVCLENBQUM1RCxNQUFNTSxNQUFNUyxRQUFRLEVBQUU0QyxRQUFROUM7Z0JBQ2xFLElBQUc4QyxPQUFPRSxPQUFPLElBQUlGLE9BQU9HLHlCQUF5QixLQUFLLFdBQVc7b0JBQ25FLE1BQU0sSUFBSS9FLFVBQVU7Z0JBQ3RCO1lBQ0Y7WUFDQSxNQUFNZ0YsWUFBWXZEO1lBQ2xCLE1BQU13RCxXQUFXLE1BQU1oRSxLQUFhLENBQUM7Ozs7OENBSUssQ0FBQyxFQUFFO2dCQUFDaUUsSUFBSXZCLE1BQU16QyxjQUFjO2dCQUFFTyxLQUFLdUQ7WUFBUztZQUN0RixJQUFHLENBQUNHLE9BQU9DLGFBQWEsQ0FBQ0gsYUFBYUUsT0FBT0YsWUFBWSxHQUFHO2dCQUMxRCxNQUFNLElBQUlqRixVQUFVO1lBQ3RCO1lBQ0EsTUFBTW1CLFlBQVlRO1lBQ2xCLE1BQU0wRCxpQkFBaUI3RCxLQUFLO2dCQUFDTDtnQkFBVztnQkFBR3dDLE1BQU1sRCxPQUFPO2FBQUM7WUFDekQsTUFBTTZFLGFBQWEsTUFBTS9ELE1BQU1nRSxlQUFlLENBQUM7Z0JBQUM5RSxTQUFTa0QsTUFBTWxELE9BQU8sSUFBSTtnQkFBSzRFO1lBQWM7WUFDN0YsTUFBTTVDLFNBQXdDO2dCQUFDSyxNQUFNM0I7Z0JBQVc0QixPQUFPaUM7Z0JBQ3JFaEIsZUFBZUwsTUFBTUssYUFBYTtnQkFBRVE7Z0JBQWFuRCxtQkFBbUI7Z0JBQUd3QyxpQkFBaUJGLE1BQU1FLGVBQWU7Z0JBQzdHcEQsU0FBU2tELE1BQU1sRCxPQUFPO2dCQUFFK0UsaUJBQWlCO2dCQUFHdEUsZ0JBQWdCeUMsTUFBTXpDLGNBQWM7Z0JBQUU0RCxTQUFTO2dCQUMzRlcsc0JBQXNCSjtnQkFBZ0JLLGdCQUFnQkosV0FBV0ssUUFBUTtnQkFDekVaLDJCQUEyQk8sV0FBV00sbUJBQW1CLElBQUk7Z0JBQVdDLFVBQVViO2dCQUNsRlgsa0JBQWtCVixNQUFNVSxnQkFBZ0I7Z0JBQUV5QixVQUFVO2dCQUFHaEMsaUJBQWlCdkMsTUFBTVMsUUFBUSxDQUFDTyxTQUFTO2dCQUNoRzBDLFVBQVVBO2dCQUFXdkMsUUFBUW5CLE1BQU1TLFFBQVEsQ0FBQ1UsTUFBTTtZQUFBO1lBQ3BELElBQUcsTUFBTXpCLEtBQWMsMENBQTBDO2dCQUFDd0I7WUFBTSxPQUFPLE1BQU07Z0JBQ25GLE1BQU0sSUFBSXpDLFVBQVU7WUFDdEI7WUFDQSxNQUFNdUIsTUFBTXdFLFdBQVcsQ0FBQzlFLE1BQU07Z0JBQUMrRSxnQkFBZ0J6RSxNQUFNUyxRQUFRLENBQUNPLFNBQVM7Z0JBQUVyQixnQkFBZ0J5QyxNQUFNekMsY0FBYztnQkFDM0crRSxNQUFNO2dCQUFtQkMsaUJBQWlCcEUsV0FBV3FFLEtBQUs7Z0JBQUVDLFlBQVlqRjtnQkFBVzJFLFVBQVU7WUFBQztZQUNoRyxNQUFNbEQsU0FBUztnQkFBQ2lCLGlCQUFpQkYsTUFBTUUsZUFBZTtnQkFBRTFDO2dCQUFXMkUsVUFBVTtnQkFBR2IsVUFBVUE7WUFBUztZQUNuRyxJQUFHLE1BQU1WLFFBQVExQixJQUFJLENBQUNELFlBQVksTUFBTTtnQkFDdEMsTUFBTSxJQUFJNUMsVUFBVTtZQUN0QjtZQUNBLE9BQU80QztRQUNUO0lBQ0EsTUFBTXlELGdCQUFnQixDQUNwQjFDLE9BQTREMkMsU0FDbEJoRCxJQUFJLE9BQU9yQztZQUNyREgsYUFBYThDLFFBQVFELFVBQVUxRCxpQkFBaUIwRCxNQUFNekMsY0FBYyxLQUFLakIsaUJBQWlCMEQsTUFBTXhDLFNBQVMsS0FDcEdsQixpQkFBaUIwRCxNQUFNNEMsY0FBYyxLQUFLcEIsT0FBT0MsYUFBYSxDQUFDekIsTUFBTTZDLGdCQUFnQixLQUNyRjdDLE1BQU02QyxnQkFBZ0IsSUFBSSxLQUFNRixDQUFBQSxVQUFXLGFBQWEzQyxTQUFTbkQsVUFBVW1ELE1BQU1sRCxPQUFPLENBQUM7WUFDOUYsTUFBTThELFVBQVUsTUFBTXJDLFFBQXNDakIsTUFBTXFGLFNBQVMsV0FBVyxRQUNwRjNDLE1BQU16QyxjQUFjLEVBQUV5QyxNQUFNNEMsY0FBYyxFQUFFNUM7WUFDOUMsSUFBR1ksUUFBUTVCLEtBQUssRUFBRTtnQkFDaEIsT0FBTzRCLFFBQVE1QixLQUFLO1lBQ3RCO1lBQ0EsTUFBTWIsYUFBYSxNQUFNRixVQUFVWCxNQUFNMEMsTUFBTXpDLGNBQWMsRUFBRTtZQUMvRCxNQUFNRSxVQUFVLE1BQU1KLG1CQUE4QkMsTUFBTTBDLE1BQU16QyxjQUFjLEVBQUV5QyxNQUFNeEMsU0FBUztZQUMvRixJQUFHQyxRQUFRMEMsZUFBZSxLQUFLdkMsTUFBTVMsUUFBUSxDQUFDTyxTQUFTLElBQUluQixRQUFRc0IsTUFBTSxLQUFLbkIsTUFBTVMsUUFBUSxDQUFDVSxNQUFNLElBQzlGdEIsUUFBUTZELFFBQVEsR0FBR25ELFdBQVcyRSxZQUFZLElBQUlyRixRQUFRMEQsT0FBTyxJQUFJMUQsUUFBUTJELHlCQUF5QixLQUFLLFdBQVc7Z0JBQ3JILE1BQU0sSUFBSS9FLFVBQVU7WUFDdEI7WUFDQSxJQUFHb0IsUUFBUTBFLFFBQVEsS0FBS25DLE1BQU02QyxnQkFBZ0IsSUFBSyxDQUFDRixVQUFVN0UsUUFBUUwsUUFBUTJCLEtBQUssR0FBRyxLQUFLLE9BQVE7Z0JBQ2pHLE1BQU0sSUFBSS9DLFVBQVU7WUFDdEI7WUFDQSxNQUFNZ0QsVUFBVS9CLE1BQU1xRixTQUFTLFdBQVcsUUFBUTtZQUNsRCxNQUFNN0YsVUFBVSxDQUFDNkYsVUFBVSxhQUFhM0MsUUFBUUEsTUFBTWxELE9BQU8sR0FBRztZQUNoRSxNQUFNcUYsV0FBVzFFLFFBQVEwRSxRQUFRLEdBQUc7WUFDcEMsTUFBTU4sa0JBQWtCcEUsUUFBUW9FLGVBQWUsR0FBRztZQUNsRCxNQUFNSCxpQkFBaUI3RCxLQUFLO2dCQUFDSixRQUFRMEIsSUFBSTtnQkFBRTBDO2dCQUFpQi9FO2FBQVE7WUFDcEUsTUFBTTZFLGFBQWEsTUFBTS9ELE1BQU1nRSxlQUFlLENBQUM7Z0JBQUM5RSxTQUFTQSxXQUFXO2dCQUFLNEU7WUFBYztZQUN2RixNQUFNcUIsVUFBVSxNQUFNekYsS0FBYyxDQUFDOzs7Ozs7NkJBTVosQ0FBQyxFQUFFO2dCQUFDK0MsZUFBZXNDLFNBQVMsRUFBRSxHQUFHbEYsUUFBUTRDLGFBQWE7Z0JBQzdFUSxhQUFhOEIsU0FBUyxFQUFFLEdBQUdsRixRQUFRb0QsV0FBVztnQkFBRS9EO2dCQUFTK0U7Z0JBQWlCSDtnQkFDMUVNLFVBQVVMLFdBQVdLLFFBQVE7Z0JBQUViLFNBQVN3QjtnQkFBUUUsa0JBQWtCN0MsTUFBTTZDLGdCQUFnQjtnQkFBRXRCLElBQUk5RCxRQUFRMEIsSUFBSTtnQkFDMUdyQixLQUFLQTtnQkFBT21FLHFCQUFxQk4sV0FBV00sbUJBQW1CLElBQUk7Z0JBQ25FZSxPQUFPTCxTQUFTLE9BQU9sRixRQUFRaUQsZ0JBQWdCLElBQUk7Z0JBQU15QjtZQUFRO1lBQ25FLElBQUdZLFlBQVksTUFBTTtnQkFDbkIsTUFBTSxJQUFJMUcsVUFBVTtZQUN0QjtZQUNBLE1BQU11QixNQUFNd0UsV0FBVyxDQUFDOUUsTUFBTTtnQkFBQytFLGdCQUFnQnpFLE1BQU1TLFFBQVEsQ0FBQ08sU0FBUztnQkFBRXJCLGdCQUFnQnlDLE1BQU16QyxjQUFjO2dCQUMzRytFLE1BQU07Z0JBQW1CQyxpQkFBaUJwRSxXQUFXcUUsS0FBSztnQkFBRUMsWUFBWWhGLFFBQVEwQixJQUFJO2dCQUFFZ0Q7WUFBUTtZQUNoRyxNQUFNbEQsU0FBUztnQkFBQ3pCLFdBQVdDLFFBQVEwQixJQUFJO2dCQUFFZ0Q7Z0JBQVViLFVBQVU3RCxRQUFRNkQsUUFBUTtZQUFBO1lBQzdFLElBQUcsTUFBTVYsUUFBUTFCLElBQUksQ0FBQ0QsWUFBWSxNQUFNO2dCQUN0QyxNQUFNLElBQUk1QyxVQUFVO1lBQ3RCO1lBQ0EsT0FBTzRDO1FBQ1Q7SUFDQSxPQUFPO1FBQUNoQjtRQUFXZ0YsZUFBZSxDQUFDakQsUUFBcUMwQyxjQUFjMUMsT0FBTztRQUMzRmtELGFBQWEsQ0FBQ2xELFFBQW1DMEMsY0FBYzFDLE9BQU87UUFBUVg7UUFBV2Q7UUFBU29CO1FBQUtJO0lBQVc7QUFDdEgsRUFBRSJ9
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9wcml2YXRlL3RtcC92YXVsdC1yZWFrdG9yLWNvbXBsZXRpb24vcGFja2FnZXMvcmVha3Rvci9zcmMvZHVyYWJsZUNoYXQvbWVzc2FnZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCwgbm8tdW5kZXJzY29yZS1kYW5nbGUgLS0gT3JkZXJlZCBjaGVja3MgYW5kIEFyYW5nbyBkb2N1bWVudCBpZGVudGl0aWVzLiAqL1xuaW1wb3J0IHtjcmVhdGVIYXNoLCByYW5kb21VVUlEfSBmcm9tICdub2RlOmNyeXB0byc7XG5cbmltcG9ydCB7Q2hhdEVycm9yfSBmcm9tICcuL2Vycm9ycy5qcyc7XG5pbXBvcnQge2lzQ2hhdElkZW50aWZpZXJ9IGZyb20gJy4vbWVtYmVyc2hpcC5qcyc7XG5cbmltcG9ydCB0eXBlIHtDaGF0UXVlcnl9IGZyb20gJy4vbWVtYmVyc2hpcC5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIER1cmFibGVDaGF0QXR0YWNobWVudCwgRHVyYWJsZUNoYXRNZXNzYWdlLCBEdXJhYmxlRGVsZXRlTWVzc2FnZUlucHV0LCBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCxcbiAgRHVyYWJsZU1lc3NhZ2VBY2tub3dsZWRnZW1lbnQsIER1cmFibGVNZXNzYWdlSG9va3MsIER1cmFibGVNZXNzYWdlTXV0YXRpb25SZXN1bHQsIER1cmFibGVTZW5kTWVzc2FnZUlucHV0XG59IGZyb20gJy4vbWVzc2FnZVR5cGVzLmpzJztcblxuY29uc3QgZGVmYXVsdEhhc2ggPSAodmFsdWU6IHVua25vd24pOiBzdHJpbmcgPT4gY3JlYXRlSGFzaCgnc2hhMjU2JykudXBkYXRlKEpTT04uc3RyaW5naWZ5KHZhbHVlKSkuZGlnZXN0KCdoZXgnKTtcbmNvbnN0IHZhbGlkVGV4dCA9IChjb250ZW50OiB1bmtub3duKTogY29udGVudCBpcyBzdHJpbmcgPT4gdHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnXG4gICYmIEFycmF5LmZyb20oY29udGVudCkubGVuZ3RoIDw9IDQwMDBcbiAgJiYgIS9bXFx1MDAwMFxcdUQ4MDAtXFx1REJGRl0oPyFbXFx1REMwMC1cXHVERkZGXSl8KD88IVtcXHVEODAwLVxcdURCRkZdKVtcXHVEQzAwLVxcdURGRkZdL3UudGVzdChjb250ZW50KTtcbmNvbnN0IHJlcXVpcmVWYWxpZCA9ICh2YWxpZDogYm9vbGVhbik6IHZvaWQgPT4ge1xuICBpZighdmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdpbnZhbGlkX3JlcXVlc3QnKTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHJlYWREdXJhYmxlTWVzc2FnZSA9IGFzeW5jIDxURGVjaXNpb24+KFxuICByZWFkOiBDaGF0UXVlcnksIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsIG1lc3NhZ2VJZDogc3RyaW5nXG4pOiBQcm9taXNlPER1cmFibGVDaGF0TWVzc2FnZTxURGVjaXNpb24+PiA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZWFkPER1cmFibGVDaGF0TWVzc2FnZTxURGVjaXNpb24+PignUkVUVVJOIERPQ1VNRU5UKFwibWVzc2FnZXNcIiwgQG1lc3NhZ2VJZCknLCB7bWVzc2FnZUlkfSk7XG4gIGlmKCFtZXNzYWdlIHx8IG1lc3NhZ2UuY29udmVyc2F0aW9uSWQgIT09IGNvbnZlcnNhdGlvbklkIHx8IG1lc3NhZ2UuY2hhdFNjaGVtYVZlcnNpb24gIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdmb3JiaWRkZW4nKTtcbiAgfVxuICByZXR1cm4gbWVzc2FnZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVEdXJhYmxlTWVzc2FnZVBlcnNpc3RlbmNlID0gPFREZWNpc2lvbj4oaG9va3M6IER1cmFibGVNZXNzYWdlSG9va3M8VERlY2lzaW9uPikgPT4ge1xuICBjb25zdCBoYXNoID0gaG9va3MuaGFzaCB8fCBkZWZhdWx0SGFzaDtcbiAgY29uc3Qgbm93ID0gaG9va3Mubm93IHx8IERhdGUubm93O1xuICBjb25zdCB1dWlkID0gaG9va3MudXVpZCB8fCByYW5kb21VVUlEO1xuICBjb25zdCBhdXRob3JpemUgPSBhc3luYyAocmVhZDogQ2hhdFF1ZXJ5LCBjb252ZXJzYXRpb25JZDogc3RyaW5nLCBwdXJwb3NlOiAnaGlzdG9yeScgfCAnc2VuZCcgPSAnaGlzdG9yeScpID0+IHtcbiAgICBjb25zdCBtZW1iZXJzaGlwID0gYXdhaXQgaG9va3MuYXV0aG9yaXplTWVtYmVyc2hpcChyZWFkLCBob29rcy5pZGVudGl0eSwgY29udmVyc2F0aW9uSWQsIHB1cnBvc2UpO1xuICAgIGNvbnN0IGxlZ2FjeSA9IGF3YWl0IHJlYWQ8Ym9vbGVhbj4oYFJFVFVSTiBGSVJTVChGT1IgbWVzc2FnZSBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIG1lc3NhZ2UuY29udmVyc2F0aW9uSWQgPT0gQGNvbnZlcnNhdGlvbklkXG4gICAgICAgIEFORCAobWVzc2FnZS5jaGF0U2NoZW1hVmVyc2lvbiAhPSAxIE9SICFJU19OVU1CRVIobWVzc2FnZS5zZXF1ZW5jZSkgT1IgbWVzc2FnZS5zZXF1ZW5jZSA8IDEpXG4gICAgICBMSU1JVCAxIFJFVFVSTiB0cnVlKWAsIHtjb252ZXJzYXRpb25JZH0pO1xuICAgIGlmKGxlZ2FjeSA9PT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignY29uZmxpY3QnKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lbWJlcnNoaXA7XG4gIH07XG4gIGNvbnN0IHJlY2VpcHQgPSBhc3luYyA8VD4oXG4gICAgcmVhZDogQ2hhdFF1ZXJ5LCBhY3Rpb246IHN0cmluZywgY29udmVyc2F0aW9uSWQ6IHN0cmluZywga2V5OiBzdHJpbmcsIHBheWxvYWQ6IHVua25vd25cbiAgKSA9PiB7XG4gICAgY29uc3QgcmVxdWVzdElkID0gaGFzaChbYWN0aW9uLCBjb252ZXJzYXRpb25JZCwgaG9va3MuaWRlbnRpdHkucGVyc29uYUlkLCBrZXldKTtcbiAgICBjb25zdCBwYXlsb2FkSGFzaCA9IGhhc2gocGF5bG9hZCk7XG4gICAgY29uc3QgcmVjb3JkID0gYXdhaXQgcmVhZDx7cmVhZG9ubHkgcGF5bG9hZEhhc2g6IHN0cmluZzsgcmVhZG9ubHkgcmVzdWx0OiBUOyByZWFkb25seSB1c2VySWQ6IHN0cmluZ30+KFxuICAgICAgJ1JFVFVSTiBET0NVTUVOVChcImNoYXRNZXNzYWdlUmVxdWVzdHNcIiwgQGtleSknLCB7a2V5OiByZXF1ZXN0SWR9KTtcbiAgICBpZihyZWNvcmQgJiYgKHJlY29yZC5wYXlsb2FkSGFzaCAhPT0gcGF5bG9hZEhhc2ggfHwgcmVjb3JkLnVzZXJJZCAhPT0gaG9va3MuaWRlbnRpdHkudXNlcklkKSkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignY29uZmxpY3QnKTtcbiAgICB9XG4gICAgcmV0dXJuIHtwcmlvcjogcmVjb3JkPy5yZXN1bHQsIHNhdmU6IChyZXN1bHQ6IFQpID0+IHJlYWQ8Ym9vbGVhbj4oXG4gICAgICAnSU5TRVJUIEByZWNvcmQgSU4gY2hhdE1lc3NhZ2VSZXF1ZXN0cyBSRVRVUk4gdHJ1ZScsIHtyZWNvcmQ6IHtfa2V5OiByZXF1ZXN0SWQsIGFkZGVkOiBub3coKSwgY29udmVyc2F0aW9uSWQsXG4gICAgICAgIHBheWxvYWRIYXNoLCBwZXJzb25hSWQ6IGhvb2tzLmlkZW50aXR5LnBlcnNvbmFJZCwgcmVzdWx0LCB1c2VySWQ6IGhvb2tzLmlkZW50aXR5LnVzZXJJZH19KX07XG4gIH07XG4gIGNvbnN0IHJhdGVMaW1pdCA9IGFzeW5jIChyZWFkOiBDaGF0UXVlcnksIGFjdGlvbjogc3RyaW5nLCBsaW1pdDogbnVtYmVyLCBpbnRlcnZhbCA9IDYwMDAwKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgY29uc3Qga2V5ID0gaGFzaChbaG9va3MuaWRlbnRpdHkudXNlcklkLCBob29rcy5pZGVudGl0eS5wZXJzb25hSWQsIGFjdGlvbiwgTWF0aC5mbG9vcihub3coKSAvIGludGVydmFsKV0pO1xuICAgIGNvbnN0IGFsbG93ZWQgPSBhd2FpdCByZWFkPGJvb2xlYW4+KGBMRVQgYnVja2V0ID0gRE9DVU1FTlQoJ2NoYXRSYXRlTGltaXRzJywgQGtleSlcbiAgICAgIEZJTFRFUiBidWNrZXQgPT0gbnVsbCBPUiBidWNrZXQuY291bnQgPCBAbGltaXRcbiAgICAgIFVQU0VSVCB7X2tleTogQGtleX0gSU5TRVJUIHtfa2V5OiBAa2V5LCBjb3VudDogMSwgcGVyc29uYUlkOiBAcGVyc29uYUlkLCB1c2VySWQ6IEB1c2VySWR9XG4gICAgICBVUERBVEUge2NvdW50OiBPTEQuY291bnQgKyAxLCBwZXJzb25hSWQ6IEBwZXJzb25hSWQsIHVzZXJJZDogQHVzZXJJZH1cbiAgICAgIElOIGNoYXRSYXRlTGltaXRzIFJFVFVSTiB0cnVlYCwge2tleSwgbGltaXQsIHBlcnNvbmFJZDogaG9va3MuaWRlbnRpdHkucGVyc29uYUlkLCB1c2VySWQ6IGhvb2tzLmlkZW50aXR5LnVzZXJJZH0pO1xuICAgIGlmKGFsbG93ZWQgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3JhdGVfbGltaXRlZCcpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcnVuID0gPFQ+KG9wZXJhdGlvbjogKHJlYWQ6IENoYXRRdWVyeSkgPT4gUHJvbWlzZTxUPiwgd3JpdGUgPSB0cnVlKTogUHJvbWlzZTxUPiA9PiBob29rcy5ydW4oYXN5bmMgKHJlYWQpID0+IHtcbiAgICBhd2FpdCBob29rcy5hdXRob3JpemVJZGVudGl0eShyZWFkLCBob29rcy5pZGVudGl0eSk7XG4gICAgcmV0dXJuIG9wZXJhdGlvbihyZWFkKTtcbiAgfSwgd3JpdGUpO1xuICBjb25zdCBzZW5kTWVzc2FnZSA9IChpbnB1dDogRHVyYWJsZVNlbmRNZXNzYWdlSW5wdXQpOiBQcm9taXNlPER1cmFibGVNZXNzYWdlQWNrbm93bGVkZ2VtZW50PiA9PiBydW4oYXN5bmMgKHJlYWQpID0+IHtcbiAgICByZXF1aXJlVmFsaWQoQm9vbGVhbihpbnB1dCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5jb252ZXJzYXRpb25JZCkgJiYgaXNDaGF0SWRlbnRpZmllcihpbnB1dC5jbGllbnRNZXNzYWdlSWQpXG4gICAgICAmJiBpbnB1dC5zZW5kZXJQZXJzb25hSWQgPT09IGhvb2tzLmlkZW50aXR5LnBlcnNvbmFJZCAmJiB2YWxpZFRleHQoaW5wdXQuY29udGVudClcbiAgICAgICYmIEFycmF5LmlzQXJyYXkoaW5wdXQuYXR0YWNobWVudElkcykgJiYgaW5wdXQuYXR0YWNobWVudElkcy5sZW5ndGggPD0gNFxuICAgICAgJiYgaW5wdXQuYXR0YWNobWVudElkcy5ldmVyeShpc0NoYXRJZGVudGlmaWVyKSAmJiBuZXcgU2V0KGlucHV0LmF0dGFjaG1lbnRJZHMpLnNpemUgPT09IGlucHV0LmF0dGFjaG1lbnRJZHMubGVuZ3RoXG4gICAgICAmJiAoaW5wdXQuY29udGVudC50cmltKCkubGVuZ3RoID4gMCB8fCBpbnB1dC5hdHRhY2htZW50SWRzLmxlbmd0aCA+IDApXG4gICAgICAmJiAoaW5wdXQucmVwbHlUb01lc3NhZ2VJZCA9PT0gdW5kZWZpbmVkIHx8IGlzQ2hhdElkZW50aWZpZXIoaW5wdXQucmVwbHlUb01lc3NhZ2VJZCkpKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxEdXJhYmxlTWVzc2FnZUFja25vd2xlZGdlbWVudD4oXG4gICAgICByZWFkLCAnc2VuZCcsIGlucHV0LmNvbnZlcnNhdGlvbklkLCBpbnB1dC5jbGllbnRNZXNzYWdlSWQsIGlucHV0KTtcbiAgICBpZihyZXF1ZXN0LnByaW9yKSB7XG4gICAgICByZXR1cm4gcmVxdWVzdC5wcmlvcjtcbiAgICB9XG4gICAgY29uc3QgbWVtYmVyc2hpcCA9IGF3YWl0IGF1dGhvcml6ZShyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCwgJ3NlbmQnKTtcbiAgICBhd2FpdCByYXRlTGltaXQocmVhZCwgJ3NlbmQnLCA2MCk7XG4gICAgY29uc3QgYXR0YWNobWVudHM6IER1cmFibGVDaGF0QXR0YWNobWVudFtdID0gW107XG4gICAgZm9yKGNvbnN0IGltYWdlSWQgb2YgaW5wdXQuYXR0YWNobWVudElkcykge1xuICAgICAgYXR0YWNobWVudHMucHVzaChhd2FpdCBob29rcy5hdXRob3JpemVBdHRhY2htZW50KHJlYWQsIGltYWdlSWQpKTtcbiAgICB9XG4gICAgaWYoaW5wdXQucmVwbHlUb01lc3NhZ2VJZCkge1xuICAgICAgY29uc3QgcXVvdGVkID0gYXdhaXQgcmVhZER1cmFibGVNZXNzYWdlPFREZWNpc2lvbj4ocmVhZCwgaW5wdXQuY29udmVyc2F0aW9uSWQsIGlucHV0LnJlcGx5VG9NZXNzYWdlSWQpO1xuICAgICAgYXdhaXQgaG9va3MuYXV0aG9yaXplTWVzc2FnZVZpc2libGUocmVhZCwgaG9va3MuaWRlbnRpdHksIHF1b3RlZCwgbWVtYmVyc2hpcCk7XG4gICAgICBpZihxdW90ZWQuZGVsZXRlZCB8fCBxdW90ZWQubW9iaWxlUGxhdGZvcm1EaXNwb3NpdGlvbiAhPT0gJ2FsbG93ZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB0aW1lc3RhbXAgPSBub3coKTtcbiAgICBjb25zdCBzZXF1ZW5jZSA9IGF3YWl0IHJlYWQ8bnVtYmVyPihgRk9SIGNvbnZlcnNhdGlvbiBJTiBjb252ZXJzYXRpb25zIEZJTFRFUiBjb252ZXJzYXRpb24uX2tleSA9PSBAaWRcbiAgICAgIEFORCBjb252ZXJzYXRpb24uY2hhdFNjaGVtYVZlcnNpb24gPT0gMSBBTkQgY29udmVyc2F0aW9uLnN0YXRlID09ICdhY3RpdmUnXG4gICAgICBBTkQgSVNfTlVNQkVSKGNvbnZlcnNhdGlvbi5sYXN0U2VxdWVuY2UpIEFORCBjb252ZXJzYXRpb24ubGFzdFNlcXVlbmNlIDwgOTAwNzE5OTI1NDc0MDk5MVxuICAgICAgVVBEQVRFIGNvbnZlcnNhdGlvbiBXSVRIIHtsYXN0U2VxdWVuY2U6IGNvbnZlcnNhdGlvbi5sYXN0U2VxdWVuY2UgKyAxLCBtb2RpZmllZDogQG5vd31cbiAgICAgIElOIGNvbnZlcnNhdGlvbnMgUkVUVVJOIE5FVy5sYXN0U2VxdWVuY2VgLCB7aWQ6IGlucHV0LmNvbnZlcnNhdGlvbklkLCBub3c6IHRpbWVzdGFtcH0pO1xuICAgIGlmKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihzZXF1ZW5jZSkgfHwgTnVtYmVyKHNlcXVlbmNlKSA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VJZCA9IHV1aWQoKTtcbiAgICBjb25zdCBjb250ZW50VmVyc2lvbiA9IGhhc2goW21lc3NhZ2VJZCwgMSwgaW5wdXQuY29udGVudF0pO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSBhd2FpdCBob29rcy5jbGFzc2lmeUNvbnRlbnQoe2NvbnRlbnQ6IGlucHV0LmNvbnRlbnQgfHwgJyAnLCBjb250ZW50VmVyc2lvbn0pO1xuICAgIGNvbnN0IHJlY29yZDogRHVyYWJsZUNoYXRNZXNzYWdlPFREZWNpc2lvbj4gPSB7X2tleTogbWVzc2FnZUlkLCBhZGRlZDogdGltZXN0YW1wLFxuICAgICAgYXR0YWNobWVudElkczogaW5wdXQuYXR0YWNobWVudElkcywgYXR0YWNobWVudHMsIGNoYXRTY2hlbWFWZXJzaW9uOiAxLCBjbGllbnRNZXNzYWdlSWQ6IGlucHV0LmNsaWVudE1lc3NhZ2VJZCxcbiAgICAgIGNvbnRlbnQ6IGlucHV0LmNvbnRlbnQsIGNvbnRlbnRSZXZpc2lvbjogMSwgY29udmVyc2F0aW9uSWQ6IGlucHV0LmNvbnZlcnNhdGlvbklkLCBkZWxldGVkOiBmYWxzZSxcbiAgICAgIG1vYmlsZUNvbnRlbnRWZXJzaW9uOiBjb250ZW50VmVyc2lvbiwgbW9iaWxlRGVjaXNpb246IHByb2plY3Rpb24uZGVjaXNpb24sXG4gICAgICBtb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uOiBwcm9qZWN0aW9uLnBsYXRmb3JtRGlzcG9zaXRpb24gfHwgJ2FsbG93ZWQnLCBtb2RpZmllZDogdGltZXN0YW1wLFxuICAgICAgcmVwbHlUb01lc3NhZ2VJZDogaW5wdXQucmVwbHlUb01lc3NhZ2VJZCwgcmV2aXNpb246IDEsIHNlbmRlclBlcnNvbmFJZDogaG9va3MuaWRlbnRpdHkucGVyc29uYUlkLFxuICAgICAgc2VxdWVuY2U6IHNlcXVlbmNlISwgdXNlcklkOiBob29rcy5pZGVudGl0eS51c2VySWR9O1xuICAgIGlmKGF3YWl0IHJlYWQ8Ym9vbGVhbj4oJ0lOU0VSVCBAcmVjb3JkIElOIG1lc3NhZ2VzIFJFVFVSTiB0cnVlJywge3JlY29yZH0pICE9PSB0cnVlKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCd1bmF2YWlsYWJsZScpO1xuICAgIH1cbiAgICBhd2FpdCBob29rcy5hcHBlbmRFdmVudChyZWFkLCB7YWN0b3JQZXJzb25hSWQ6IGhvb2tzLmlkZW50aXR5LnBlcnNvbmFJZCwgY29udmVyc2F0aW9uSWQ6IGlucHV0LmNvbnZlcnNhdGlvbklkLFxuICAgICAga2luZDogJ21lc3NhZ2UuY2hhbmdlZCcsIG1lbWJlcnNoaXBFcG9jaDogbWVtYmVyc2hpcC5lcG9jaCwgcmVzb3VyY2VJZDogbWVzc2FnZUlkLCByZXZpc2lvbjogMX0pO1xuICAgIGNvbnN0IHJlc3VsdCA9IHtjbGllbnRNZXNzYWdlSWQ6IGlucHV0LmNsaWVudE1lc3NhZ2VJZCwgbWVzc2FnZUlkLCByZXZpc2lvbjogMSwgc2VxdWVuY2U6IHNlcXVlbmNlIX07XG4gICAgaWYoYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCkgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuICBjb25zdCBtdXRhdGVNZXNzYWdlID0gKFxuICAgIGlucHV0OiBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCB8IER1cmFibGVEZWxldGVNZXNzYWdlSW5wdXQsIHJlbW92ZTogYm9vbGVhblxuICApOiBQcm9taXNlPER1cmFibGVNZXNzYWdlTXV0YXRpb25SZXN1bHQ+ID0+IHJ1bihhc3luYyAocmVhZCkgPT4ge1xuICAgIHJlcXVpcmVWYWxpZChCb29sZWFuKGlucHV0KSAmJiBpc0NoYXRJZGVudGlmaWVyKGlucHV0LmNvbnZlcnNhdGlvbklkKSAmJiBpc0NoYXRJZGVudGlmaWVyKGlucHV0Lm1lc3NhZ2VJZClcbiAgICAgICYmIGlzQ2hhdElkZW50aWZpZXIoaW5wdXQuaWRlbXBvdGVuY3lLZXkpICYmIE51bWJlci5pc1NhZmVJbnRlZ2VyKGlucHV0LmV4cGVjdGVkUmV2aXNpb24pXG4gICAgICAmJiBpbnB1dC5leHBlY3RlZFJldmlzaW9uID49IDEgJiYgKHJlbW92ZSB8fCAoJ2NvbnRlbnQnIGluIGlucHV0ICYmIHZhbGlkVGV4dChpbnB1dC5jb250ZW50KSkpKTtcbiAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgcmVjZWlwdDxEdXJhYmxlTWVzc2FnZU11dGF0aW9uUmVzdWx0PihyZWFkLCByZW1vdmUgPyAnZGVsZXRlJyA6ICdlZGl0JyxcbiAgICAgIGlucHV0LmNvbnZlcnNhdGlvbklkLCBpbnB1dC5pZGVtcG90ZW5jeUtleSwgaW5wdXQpO1xuICAgIGlmKHJlcXVlc3QucHJpb3IpIHtcbiAgICAgIHJldHVybiByZXF1ZXN0LnByaW9yO1xuICAgIH1cbiAgICBjb25zdCBtZW1iZXJzaGlwID0gYXdhaXQgYXV0aG9yaXplKHJlYWQsIGlucHV0LmNvbnZlcnNhdGlvbklkLCAnc2VuZCcpO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhd2FpdCByZWFkRHVyYWJsZU1lc3NhZ2U8VERlY2lzaW9uPihyZWFkLCBpbnB1dC5jb252ZXJzYXRpb25JZCwgaW5wdXQubWVzc2FnZUlkKTtcbiAgICBpZihtZXNzYWdlLnNlbmRlclBlcnNvbmFJZCAhPT0gaG9va3MuaWRlbnRpdHkucGVyc29uYUlkIHx8IG1lc3NhZ2UudXNlcklkICE9PSBob29rcy5pZGVudGl0eS51c2VySWRcbiAgICAgIHx8IG1lc3NhZ2Uuc2VxdWVuY2UgPCBtZW1iZXJzaGlwLmpvaW5TZXF1ZW5jZSB8fCBtZXNzYWdlLmRlbGV0ZWQgfHwgbWVzc2FnZS5tb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uICE9PSAnYWxsb3dlZCcpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ2ZvcmJpZGRlbicpO1xuICAgIH1cbiAgICBpZihtZXNzYWdlLnJldmlzaW9uICE9PSBpbnB1dC5leHBlY3RlZFJldmlzaW9uIHx8ICghcmVtb3ZlICYmIG5vdygpIC0gbWVzc2FnZS5hZGRlZCA+IDE1ICogNjAwMDApKSB7XG4gICAgICB0aHJvdyBuZXcgQ2hhdEVycm9yKCdjb25mbGljdCcpO1xuICAgIH1cbiAgICBhd2FpdCByYXRlTGltaXQocmVhZCwgcmVtb3ZlID8gJ2RlbGV0ZScgOiAnZWRpdCcsIDYwKTtcbiAgICBjb25zdCBjb250ZW50ID0gIXJlbW92ZSAmJiAnY29udGVudCcgaW4gaW5wdXQgPyBpbnB1dC5jb250ZW50IDogJyc7XG4gICAgY29uc3QgcmV2aXNpb24gPSBtZXNzYWdlLnJldmlzaW9uICsgMTtcbiAgICBjb25zdCBjb250ZW50UmV2aXNpb24gPSBtZXNzYWdlLmNvbnRlbnRSZXZpc2lvbiArIDE7XG4gICAgY29uc3QgY29udGVudFZlcnNpb24gPSBoYXNoKFttZXNzYWdlLl9rZXksIGNvbnRlbnRSZXZpc2lvbiwgY29udGVudF0pO1xuICAgIGNvbnN0IHByb2plY3Rpb24gPSBhd2FpdCBob29rcy5jbGFzc2lmeUNvbnRlbnQoe2NvbnRlbnQ6IGNvbnRlbnQgfHwgJyAnLCBjb250ZW50VmVyc2lvbn0pO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCByZWFkPGJvb2xlYW4+KGBGT1IgY3VycmVudCBJTiBtZXNzYWdlc1xuICAgICAgRklMVEVSIGN1cnJlbnQuX2tleSA9PSBAaWQgQU5EIGN1cnJlbnQucmV2aXNpb24gPT0gQGV4cGVjdGVkUmV2aXNpb25cbiAgICAgIFVQREFURSBjdXJyZW50IFdJVEgge2NvbnRlbnQ6IEBjb250ZW50LCBjb250ZW50UmV2aXNpb246IEBjb250ZW50UmV2aXNpb24sIGRlbGV0ZWQ6IEBkZWxldGVkLFxuICAgICAgICBhdHRhY2htZW50SWRzOiBAYXR0YWNobWVudElkcywgYXR0YWNobWVudHM6IEBhdHRhY2htZW50cywgcmVwbHlUb01lc3NhZ2VJZDogQHJlcGx5LFxuICAgICAgICBtb2JpbGVDb250ZW50VmVyc2lvbjogQGNvbnRlbnRWZXJzaW9uLCBtb2JpbGVEZWNpc2lvbjogQGRlY2lzaW9uLFxuICAgICAgICBtb2JpbGVQbGF0Zm9ybURpc3Bvc2l0aW9uOiBAcGxhdGZvcm1EaXNwb3NpdGlvbiwgbW9kaWZpZWQ6IEBub3csIHJldmlzaW9uOiBAcmV2aXNpb259XG4gICAgICBJTiBtZXNzYWdlcyBSRVRVUk4gdHJ1ZWAsIHthdHRhY2htZW50SWRzOiByZW1vdmUgPyBbXSA6IG1lc3NhZ2UuYXR0YWNobWVudElkcyxcbiAgICAgIGF0dGFjaG1lbnRzOiByZW1vdmUgPyBbXSA6IG1lc3NhZ2UuYXR0YWNobWVudHMsIGNvbnRlbnQsIGNvbnRlbnRSZXZpc2lvbiwgY29udGVudFZlcnNpb24sXG4gICAgICBkZWNpc2lvbjogcHJvamVjdGlvbi5kZWNpc2lvbiwgZGVsZXRlZDogcmVtb3ZlLCBleHBlY3RlZFJldmlzaW9uOiBpbnB1dC5leHBlY3RlZFJldmlzaW9uLCBpZDogbWVzc2FnZS5fa2V5LFxuICAgICAgbm93OiBub3coKSwgcGxhdGZvcm1EaXNwb3NpdGlvbjogcHJvamVjdGlvbi5wbGF0Zm9ybURpc3Bvc2l0aW9uIHx8ICdhbGxvd2VkJyxcbiAgICAgIHJlcGx5OiByZW1vdmUgPyBudWxsIDogbWVzc2FnZS5yZXBseVRvTWVzc2FnZUlkIHx8IG51bGwsIHJldmlzaW9ufSk7XG4gICAgaWYodXBkYXRlZCAhPT0gdHJ1ZSkge1xuICAgICAgdGhyb3cgbmV3IENoYXRFcnJvcignY29uZmxpY3QnKTtcbiAgICB9XG4gICAgYXdhaXQgaG9va3MuYXBwZW5kRXZlbnQocmVhZCwge2FjdG9yUGVyc29uYUlkOiBob29rcy5pZGVudGl0eS5wZXJzb25hSWQsIGNvbnZlcnNhdGlvbklkOiBpbnB1dC5jb252ZXJzYXRpb25JZCxcbiAgICAgIGtpbmQ6ICdtZXNzYWdlLmNoYW5nZWQnLCBtZW1iZXJzaGlwRXBvY2g6IG1lbWJlcnNoaXAuZXBvY2gsIHJlc291cmNlSWQ6IG1lc3NhZ2UuX2tleSwgcmV2aXNpb259KTtcbiAgICBjb25zdCByZXN1bHQgPSB7bWVzc2FnZUlkOiBtZXNzYWdlLl9rZXksIHJldmlzaW9uLCBzZXF1ZW5jZTogbWVzc2FnZS5zZXF1ZW5jZX07XG4gICAgaWYoYXdhaXQgcmVxdWVzdC5zYXZlKHJlc3VsdCkgIT09IHRydWUpIHtcbiAgICAgIHRocm93IG5ldyBDaGF0RXJyb3IoJ3VuYXZhaWxhYmxlJyk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xuICByZXR1cm4ge2F1dGhvcml6ZSwgZGVsZXRlTWVzc2FnZTogKGlucHV0OiBEdXJhYmxlRGVsZXRlTWVzc2FnZUlucHV0KSA9PiBtdXRhdGVNZXNzYWdlKGlucHV0LCB0cnVlKSxcbiAgICBlZGl0TWVzc2FnZTogKGlucHV0OiBEdXJhYmxlRWRpdE1lc3NhZ2VJbnB1dCkgPT4gbXV0YXRlTWVzc2FnZShpbnB1dCwgZmFsc2UpLCByYXRlTGltaXQsIHJlY2VpcHQsIHJ1biwgc2VuZE1lc3NhZ2V9O1xufTtcblxuZXhwb3J0IHR5cGUgRHVyYWJsZU1lc3NhZ2VQZXJzaXN0ZW5jZTxURGVjaXNpb24gPSB1bmtub3duPiA9XG4gIFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZUR1cmFibGVNZXNzYWdlUGVyc2lzdGVuY2U8VERlY2lzaW9uPj47XG4iXSwibmFtZXMiOlsiY3JlYXRlSGFzaCIsInJhbmRvbVVVSUQiLCJDaGF0RXJyb3IiLCJpc0NoYXRJZGVudGlmaWVyIiwiZGVmYXVsdEhhc2giLCJ2YWx1ZSIsInVwZGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJkaWdlc3QiLCJ2YWxpZFRleHQiLCJjb250ZW50IiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwidGVzdCIsInJlcXVpcmVWYWxpZCIsInZhbGlkIiwicmVhZER1cmFibGVNZXNzYWdlIiwicmVhZCIsImNvbnZlcnNhdGlvbklkIiwibWVzc2FnZUlkIiwibWVzc2FnZSIsImNoYXRTY2hlbWFWZXJzaW9uIiwiY3JlYXRlRHVyYWJsZU1lc3NhZ2VQZXJzaXN0ZW5jZSIsImhvb2tzIiwiaGFzaCIsIm5vdyIsIkRhdGUiLCJ1dWlkIiwiYXV0aG9yaXplIiwicHVycG9zZSIsIm1lbWJlcnNoaXAiLCJhdXRob3JpemVNZW1iZXJzaGlwIiwiaWRlbnRpdHkiLCJsZWdhY3kiLCJyZWNlaXB0IiwiYWN0aW9uIiwia2V5IiwicGF5bG9hZCIsInJlcXVlc3RJZCIsInBlcnNvbmFJZCIsInBheWxvYWRIYXNoIiwicmVjb3JkIiwidXNlcklkIiwicHJpb3IiLCJyZXN1bHQiLCJzYXZlIiwiX2tleSIsImFkZGVkIiwicmF0ZUxpbWl0IiwibGltaXQiLCJpbnRlcnZhbCIsIk1hdGgiLCJmbG9vciIsImFsbG93ZWQiLCJydW4iLCJvcGVyYXRpb24iLCJ3cml0ZSIsImF1dGhvcml6ZUlkZW50aXR5Iiwic2VuZE1lc3NhZ2UiLCJpbnB1dCIsIkJvb2xlYW4iLCJjbGllbnRNZXNzYWdlSWQiLCJzZW5kZXJQZXJzb25hSWQiLCJpc0FycmF5IiwiYXR0YWNobWVudElkcyIsImV2ZXJ5IiwiU2V0Iiwic2l6ZSIsInRyaW0iLCJyZXBseVRvTWVzc2FnZUlkIiwidW5kZWZpbmVkIiwicmVxdWVzdCIsImF0dGFjaG1lbnRzIiwiaW1hZ2VJZCIsInB1c2giLCJhdXRob3JpemVBdHRhY2htZW50IiwicXVvdGVkIiwiYXV0aG9yaXplTWVzc2FnZVZpc2libGUiLCJkZWxldGVkIiwibW9iaWxlUGxhdGZvcm1EaXNwb3NpdGlvbiIsInRpbWVzdGFtcCIsInNlcXVlbmNlIiwiaWQiLCJOdW1iZXIiLCJpc1NhZmVJbnRlZ2VyIiwiY29udGVudFZlcnNpb24iLCJwcm9qZWN0aW9uIiwiY2xhc3NpZnlDb250ZW50IiwiY29udGVudFJldmlzaW9uIiwibW9iaWxlQ29udGVudFZlcnNpb24iLCJtb2JpbGVEZWNpc2lvbiIsImRlY2lzaW9uIiwicGxhdGZvcm1EaXNwb3NpdGlvbiIsIm1vZGlmaWVkIiwicmV2aXNpb24iLCJhcHBlbmRFdmVudCIsImFjdG9yUGVyc29uYUlkIiwia2luZCIsIm1lbWJlcnNoaXBFcG9jaCIsImVwb2NoIiwicmVzb3VyY2VJZCIsIm11dGF0ZU1lc3NhZ2UiLCJyZW1vdmUiLCJpZGVtcG90ZW5jeUtleSIsImV4cGVjdGVkUmV2aXNpb24iLCJqb2luU2VxdWVuY2UiLCJ1cGRhdGVkIiwicmVwbHkiLCJkZWxldGVNZXNzYWdlIiwiZWRpdE1lc3NhZ2UiXSwibWFwcGluZ3MiOiJBQUFBLDJHQUEyRyxHQUMzRyxTQUFRQSxVQUFVLEVBQUVDLFVBQVUsUUFBTyxjQUFjO0FBRW5ELFNBQVFDLFNBQVMsUUFBTyxjQUFjO0FBQ3RDLFNBQVFDLGdCQUFnQixRQUFPLGtCQUFrQjtBQVFqRCxNQUFNQyxjQUFjLENBQUNDLFFBQTJCTCxXQUFXLFVBQVVNLE1BQU0sQ0FBQ0MsS0FBS0MsU0FBUyxDQUFDSCxRQUFRSSxNQUFNLENBQUM7QUFDMUcsTUFBTUMsWUFBWSxDQUFDQyxVQUF3QyxPQUFPQSxZQUFZLFlBQ3pFQyxNQUFNQyxJQUFJLENBQUNGLFNBQVNHLE1BQU0sSUFBSSxRQUM5QixDQUFDLGdGQUFnRkMsSUFBSSxDQUFDSjtBQUMzRixNQUFNSyxlQUFlLENBQUNDO0lBQ3BCLElBQUcsQ0FBQ0EsT0FBTztRQUNULE1BQU0sSUFBSWYsVUFBVTtJQUN0QjtBQUNGO0FBRUEsT0FBTyxNQUFNZ0IscUJBQXFCLE9BQ2hDQyxNQUFpQkMsZ0JBQXdCQztJQUV6QyxNQUFNQyxVQUFVLE1BQU1ILEtBQW9DLDJDQUEyQztRQUFDRTtJQUFTO0lBQy9HLElBQUcsQ0FBQ0MsV0FBV0EsUUFBUUYsY0FBYyxLQUFLQSxrQkFBa0JFLFFBQVFDLGlCQUFpQixLQUFLLEdBQUc7UUFDM0YsTUFBTSxJQUFJckIsVUFBVTtJQUN0QjtJQUNBLE9BQU9vQjtBQUNULEVBQUU7QUFFRixP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
|