@lifeready/core 1.0.21 → 1.0.22
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/bundles/lifeready-core.umd.js +9745 -9700
- package/bundles/lifeready-core.umd.js.map +1 -1
- package/bundles/lifeready-core.umd.min.js +2 -2
- package/bundles/lifeready-core.umd.min.js.map +1 -1
- package/esm2015/lib/_common/run-outside-angular.js +2 -2
- package/esm2015/lib/_common/types.js +1 -1
- package/esm2015/lib/api/lr-apollo.service.js +3 -3
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +3 -3
- package/esm2015/lib/api/query-processor/common-processors.service.js +3 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +4 -4
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +6 -5
- package/esm2015/lib/api/types/lr-graphql.types.js +1 -1
- package/esm2015/lib/auth/auth.gql.js +1 -28
- package/esm2015/lib/auth/auth.types.js +1 -1
- package/esm2015/lib/auth/life-ready-auth.service.js +32 -31
- package/esm2015/lib/category/category.gql.js +1 -1
- package/esm2015/lib/category/category.service.js +6 -6
- package/esm2015/lib/contact-card/contact-card.gql.js +79 -0
- package/esm2015/lib/contact-card/contact-card.service.js +154 -0
- package/esm2015/lib/contact-card/contact-card2.gql.js +29 -0
- package/esm2015/lib/contact-card/contact-card2.service.js +103 -0
- package/esm2015/lib/encryption/encryption.service.js +189 -0
- package/esm2015/lib/file-upload/file-upload.service.js +74 -0
- package/esm2015/lib/file-upload/file-upload.types.js +1 -0
- package/esm2015/lib/{auth → idle}/idle.service.js +7 -7
- package/esm2015/lib/{auth → idle}/idle.types.js +1 -1
- package/esm2015/lib/items2/item2.service.js +20 -20
- package/esm2015/lib/key/key-factory.service.js +237 -0
- package/esm2015/lib/{cryptography → key}/key-graph.service.js +10 -10
- package/esm2015/lib/key/key-meta.service.js +200 -0
- package/esm2015/lib/key/key.service.js +124 -0
- package/esm2015/lib/key/key.types.js +11 -0
- package/esm2015/lib/key-exchange/key-exchange.gql.js +188 -0
- package/esm2015/lib/key-exchange/key-exchange.service.js +443 -0
- package/esm2015/lib/key-exchange/key-exchange.types.js +7 -0
- package/esm2015/lib/key-exchange/key-exchange2.gql.js +171 -0
- package/esm2015/lib/key-exchange/key-exchange2.service.js +500 -0
- package/esm2015/lib/lbop/lbop.service.js +355 -0
- package/esm2015/lib/life-ready.module.js +2 -27
- package/esm2015/lib/lock/lock.gql.js +40 -0
- package/esm2015/lib/lock/lock.service.js +64 -0
- package/esm2015/lib/message/message.gql.js +32 -0
- package/esm2015/lib/message/message.service.js +116 -0
- package/esm2015/lib/message/message.types.js +1 -0
- package/esm2015/lib/password/password.gql.js +28 -0
- package/esm2015/lib/password/password.service.js +315 -0
- package/esm2015/lib/persist/persist.service.js +180 -0
- package/esm2015/lib/profile/profile-details.service.js +214 -0
- package/esm2015/lib/profile/profile.gql.js +97 -0
- package/esm2015/lib/profile/profile.service.js +169 -0
- package/esm2015/lib/profile/profile.types.js +34 -0
- package/esm2015/lib/record/record-attachment.service.js +15 -15
- package/esm2015/lib/record/record.service.js +3 -3
- package/esm2015/lib/register/register.service.js +172 -0
- package/esm2015/lib/scenario/scenario.controller.js +2 -2
- package/esm2015/lib/scenario/{scenario.gql.private.js → scenario.private.gql.js} +1 -1
- package/esm2015/lib/scenario/scenario.service.js +9 -9
- package/esm2015/lib/scenario/scenario.types.js +1 -1
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +119 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +41 -0
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +117 -0
- package/esm2015/lib/slip39/slip39.service.js +169 -0
- package/esm2015/lib/time/time.service.js +146 -0
- package/esm2015/lib/tp-assembly/tp-assembly.js +365 -0
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +22 -0
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +1 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +100 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +117 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +4 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +34 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +74 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +165 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +54 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +92 -0
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +1 -0
- package/esm2015/lib/trusted-party/trusted-party.gql.js +148 -0
- package/esm2015/lib/trusted-party/trusted-party.service.js +326 -0
- package/esm2015/lib/trusted-party/trusted-party.types.js +41 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.js +64 -0
- package/esm2015/lib/trusted-party/trusted-party2.gql.private.js +25 -0
- package/esm2015/lib/trusted-party/trusted-party2.service.js +224 -0
- package/esm2015/lib/trusted-party/trusted-party2.types.js +1 -0
- package/esm2015/lib/two-factor/two-factor.service.js +74 -0
- package/esm2015/lib/user/user.gql.js +60 -0
- package/esm2015/lib/user/user.service.js +79 -0
- package/esm2015/lib/user/user.types.js +1 -0
- package/esm2015/lib/web-crypto/web-crypto.service.js +29 -0
- package/esm2015/lifeready-core.js +15 -13
- package/esm2015/public-api.js +49 -51
- package/fesm2015/lifeready-core.js +9232 -9214
- package/fesm2015/lifeready-core.js.map +1 -1
- package/lib/_common/types.d.ts +3 -1
- package/lib/api/lr-apollo.service.d.ts +1 -1
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +1 -1
- package/lib/api/query-processor/common-processors.service.d.ts +1 -1
- package/lib/api/query-processor/query-processor.service.d.ts +1 -1
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +1 -1
- package/lib/api/types/lr-graphql.types.d.ts +11 -0
- package/lib/auth/auth.gql.d.ts +0 -3
- package/lib/auth/auth.types.d.ts +2 -2
- package/lib/auth/life-ready-auth.service.d.ts +12 -12
- package/lib/category/category.gql.d.ts +1 -1
- package/lib/category/category.service.d.ts +2 -2
- package/lib/{api → contact-card}/contact-card.service.d.ts +9 -9
- package/lib/contact-card/contact-card2.gql.d.ts +25 -0
- package/lib/{api → contact-card}/contact-card2.service.d.ts +11 -12
- package/lib/{cryptography → encryption}/encryption.service.d.ts +2 -2
- package/lib/{api/file.service.d.ts → file-upload/file-upload.service.d.ts} +3 -7
- package/lib/file-upload/file-upload.types.d.ts +5 -0
- package/lib/{auth → idle}/idle.service.d.ts +4 -4
- package/lib/items2/item2.service.d.ts +11 -11
- package/lib/{cryptography → key}/key-factory.service.d.ts +2 -2
- package/lib/{cryptography → key}/key-graph.service.d.ts +5 -5
- package/lib/{cryptography → key}/key-meta.service.d.ts +1 -1
- package/lib/{cryptography → key}/key.service.d.ts +2 -2
- package/lib/{cryptography/cryptography.types.d.ts → key/key.types.d.ts} +9 -13
- package/lib/{api → key-exchange}/key-exchange.service.d.ts +5 -5
- package/lib/{api → key-exchange}/key-exchange.types.d.ts +4 -4
- package/lib/{api → key-exchange}/key-exchange2.gql.d.ts +1 -1
- package/lib/{api → key-exchange}/key-exchange2.service.d.ts +71 -18
- package/lib/{auth → lbop}/lbop.service.d.ts +7 -7
- package/lib/{api → lock}/lock.gql.d.ts +1 -1
- package/lib/{api → lock}/lock.service.d.ts +1 -1
- package/lib/message/message.gql.d.ts +13 -0
- package/lib/message/message.service.d.ts +29 -0
- package/lib/message/message.types.d.ts +12 -0
- package/lib/password/password.gql.d.ts +3 -0
- package/lib/{auth → password}/password.service.d.ts +8 -8
- package/lib/{api → persist}/persist.service.d.ts +3 -3
- package/lib/{users → profile}/profile-details.service.d.ts +3 -3
- package/lib/{users → profile}/profile.gql.d.ts +2 -2
- package/lib/{users → profile}/profile.service.d.ts +6 -6
- package/lib/{users → profile}/profile.types.d.ts +1 -1
- package/lib/record/record-attachment.service.d.ts +6 -6
- package/lib/record/record.service.d.ts +1 -1
- package/lib/{auth → register}/register.service.d.ts +4 -4
- package/lib/scenario/scenario.controller.d.ts +1 -1
- package/lib/scenario/scenario.service.d.ts +2 -2
- package/lib/scenario/scenario.types.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card.service.d.ts +9 -9
- package/lib/{api → shared-contact-card}/shared-contact-card2.gql.d.ts +1 -1
- package/lib/{api → shared-contact-card}/shared-contact-card2.service.d.ts +6 -6
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.d.ts +7 -7
- package/lib/{trusted-parties → tp-assembly}/tp-assembly.types.d.ts +1 -1
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-request.service.d.ts +4 -8
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset-user.service.d.ts +7 -13
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.controller.d.ts +1 -1
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +63 -0
- package/lib/{trusted-parties/tp-password-reset.gql.d.ts → tp-password-reset/tp-password-reset.private.gql.d.ts} +1 -63
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +59 -0
- package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.service.d.ts +6 -89
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +40 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party.service.d.ts +7 -7
- package/lib/{trusted-parties → trusted-party}/trusted-party.types.d.ts +2 -3
- package/lib/{trusted-parties → trusted-party}/trusted-party2.gql.d.ts +0 -22
- package/lib/trusted-party/trusted-party2.gql.private.d.ts +23 -0
- package/lib/{trusted-parties → trusted-party}/trusted-party2.service.d.ts +11 -35
- package/lib/trusted-party/trusted-party2.types.d.ts +12 -0
- package/lib/{users → user}/user.gql.d.ts +1 -1
- package/lib/{users → user}/user.types.d.ts +1 -1
- package/lifeready-core.d.ts +14 -12
- package/lifeready-core.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +48 -50
- package/esm2015/lib/api/contact-card.gql.js +0 -79
- package/esm2015/lib/api/contact-card.service.js +0 -154
- package/esm2015/lib/api/contact-card2.gql.js +0 -60
- package/esm2015/lib/api/contact-card2.service.js +0 -103
- package/esm2015/lib/api/file.service.js +0 -74
- package/esm2015/lib/api/key-exchange.gql.js +0 -188
- package/esm2015/lib/api/key-exchange.service.js +0 -442
- package/esm2015/lib/api/key-exchange.types.js +0 -7
- package/esm2015/lib/api/key-exchange2.gql.js +0 -171
- package/esm2015/lib/api/key-exchange2.service.js +0 -480
- package/esm2015/lib/api/lock.gql.js +0 -40
- package/esm2015/lib/api/lock.service.js +0 -64
- package/esm2015/lib/api/message.service.js +0 -138
- package/esm2015/lib/api/persist.service.js +0 -181
- package/esm2015/lib/api/shared-contact-card.service.js +0 -119
- package/esm2015/lib/api/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/api/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/api/time.service.js +0 -146
- package/esm2015/lib/auth/lbop.service.js +0 -355
- package/esm2015/lib/auth/password.service.js +0 -315
- package/esm2015/lib/auth/register.service.js +0 -172
- package/esm2015/lib/auth/two-factor.service.js +0 -74
- package/esm2015/lib/cryptography/cryptography.types.js +0 -11
- package/esm2015/lib/cryptography/encryption.service.js +0 -189
- package/esm2015/lib/cryptography/key-factory.service.js +0 -237
- package/esm2015/lib/cryptography/key-meta.service.js +0 -200
- package/esm2015/lib/cryptography/key.service.js +0 -124
- package/esm2015/lib/cryptography/slip39.service.js +0 -169
- package/esm2015/lib/cryptography/web-crypto.service.js +0 -29
- package/esm2015/lib/trusted-parties/tp-assembly.gql.private.js +0 -22
- package/esm2015/lib/trusted-parties/tp-assembly.js +0 -365
- package/esm2015/lib/trusted-parties/tp-assembly.types.js +0 -1
- package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +0 -113
- package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +0 -129
- package/esm2015/lib/trusted-parties/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/trusted-parties/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +0 -237
- package/esm2015/lib/trusted-parties/tp-password-reset.service.js +0 -95
- package/esm2015/lib/trusted-parties/trusted-party.gql.js +0 -148
- package/esm2015/lib/trusted-parties/trusted-party.service.js +0 -326
- package/esm2015/lib/trusted-parties/trusted-party.types.js +0 -41
- package/esm2015/lib/trusted-parties/trusted-party2.gql.js +0 -87
- package/esm2015/lib/trusted-parties/trusted-party2.service.js +0 -218
- package/esm2015/lib/users/profile-details.service.js +0 -214
- package/esm2015/lib/users/profile.gql.js +0 -97
- package/esm2015/lib/users/profile.service.js +0 -169
- package/esm2015/lib/users/profile.types.js +0 -34
- package/esm2015/lib/users/user.gql.js +0 -60
- package/esm2015/lib/users/user.service.js +0 -79
- package/esm2015/lib/users/user.types.js +0 -1
- package/lib/api/contact-card2.gql.d.ts +0 -34
- package/lib/api/message.service.d.ts +0 -59
- /package/lib/{api → contact-card}/contact-card.gql.d.ts +0 -0
- /package/lib/{auth → idle}/idle.types.d.ts +0 -0
- /package/lib/{api → key-exchange}/key-exchange.gql.d.ts +0 -0
- /package/lib/scenario/{scenario.gql.private.d.ts → scenario.private.gql.d.ts} +0 -0
- /package/lib/{cryptography → slip39}/slip39.service.d.ts +0 -0
- /package/lib/{api → time}/time.service.d.ts +0 -0
- /package/lib/{trusted-parties/tp-assembly.gql.private.d.ts → tp-assembly/tp-assembly.private.gql.d.ts} +0 -0
- /package/lib/{trusted-parties → tp-password-reset}/tp-password-reset.constants.d.ts +0 -0
- /package/lib/{trusted-parties → trusted-party}/trusted-party.gql.d.ts +0 -0
- /package/lib/{auth → two-factor}/two-factor.service.d.ts +0 -0
- /package/lib/{users → user}/user.service.d.ts +0 -0
- /package/lib/{cryptography → web-crypto}/web-crypto.service.d.ts +0 -0
|
@@ -403,4 +403,4 @@ export const UnarchiveDirectoryMutation = gql `
|
|
|
403
403
|
}
|
|
404
404
|
}
|
|
405
405
|
`;
|
|
406
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuZ3FsLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jYXRlZ29yeS9jYXRlZ29yeS5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRzlCLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFM0MsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2QixnQ0FBZSxDQUFBO0lBQ2Ysc0NBQXFCLENBQUE7SUFDckIsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMvQyxNQUFNLEVBQUU7UUFDTjtZQUNFLFFBQVEsRUFBRTtnQkFDUixhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUs7Z0JBQ2xDLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRjtLQUNGO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0MsTUFBTSxFQUFFO1FBQ047WUFDRSxRQUFRLEVBQUU7Z0JBQ1IsYUFBYSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2FBQ3RDO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pDLE1BQU0sRUFBRTtRQUNOO1lBQ0UsUUFBUSxFQUFFO2dCQUNSLGFBQWEsRUFBRSxhQUFhLENBQUMsTUFBTTthQUNwQztTQUNGO0tBQ0Y7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7O0VBVzFCLENBQUM7QUFFSCxNQUFNLHFCQUFxQixHQUFHOytCQUNDLHlCQUF5Qjs7O0NBR3ZELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7Ozs7OztJQU0xQixZQUFZO0lBQ1oscUJBQXFCO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7Ozs7O0NBSzFCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Q0FVMUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztrQkFVbkIsY0FBYzs7Ozs7Ozs7Ozs7O0VBWTlCLGdCQUFnQjtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTs7Ozs7O1VBTXZCLFdBQVc7Ozs7Ozs7O0VBUW5CLGdCQUFnQjtDQUNqQixDQUFDO0FBV0YsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztjQVFuQyxjQUFjOzs7Ozs7Ozs7Ozs7OztjQWNkLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkJ4QixnQkFBZ0I7Q0FDakIsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Y0FRL0IsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Y0FjZCxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZCeEIsZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQUssR0FBRyx3QkFBd0IsRUFBRSxFQUFFO0lBQ3hFLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsT0FBTzs7Ozs7Ozs7OztVQVVDLHFCQUFxQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7VUFDaEMsWUFBWTs7Ozs7Q0FLckIsQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLFFBQWdCLHdCQUF3QixFQUN4QyxFQUFFLENBQUMsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7O01BYUYsWUFBWTtNQUNaLHFCQUFxQjtNQUNyQixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7Ozs7O2NBS3BCLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FnQmQsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QnhCLGdCQUFnQixHQUFHLENBQUM7QUFFdEIsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7SUFZcEMsZ0JBQWdCO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCeEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CckMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Q0FReEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7O0NBTXhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUTFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUTVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXNLZXlHcmFwaCB9IGZyb20gJy4vLi4vY3J5cHRvZ3JhcGh5L2NyeXB0b2dyYXBoeS50eXBlcyc7XG5pbXBvcnQgeyBLZXlHcmFwaEZyYWdtZW50IH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcbmltcG9ydCB7IEhhc0tleUdyYXBoRWRnZXMsIEhhc0VkZ2VzIH0gZnJvbSAnLi4vX2NvbW1vbi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0JSRUFEQ1JVTUJfREVQVEggPSA1O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREVTQ0VOREFOVFNfREVQVEggPSA1O1xuXG5leHBvcnQgZW51bSBEaXJlY3RvcnlUeXBlIHtcbiAgVmF1bHQgPSAndmF1bHQnLFxuICBDYXRlZ29yeSA9ICdjYXRlZ29yeScsXG4gIFJlY29yZCA9ICdyZWNvcmQnLFxufVxuXG5leHBvcnQgY29uc3QgRGVmYXVsdFZhdWx0RmlsdGVyID0gSlNPTi5zdHJpbmdpZnkoe1xuICBmaWx0ZXI6IFtcbiAgICB7XG4gICAgICBjb250YWluczoge1xuICAgICAgICBkaXJlY3RvcnlUeXBlOiBEaXJlY3RvcnlUeXBlLlZhdWx0LFxuICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgfSxcbiAgICB9LFxuICBdLFxufSk7XG5cbmV4cG9ydCBjb25zdCBDYXRlZ29yeUZpbHRlciA9IEpTT04uc3RyaW5naWZ5KHtcbiAgZmlsdGVyOiBbXG4gICAge1xuICAgICAgY29udGFpbnM6IHtcbiAgICAgICAgZGlyZWN0b3J5VHlwZTogRGlyZWN0b3J5VHlwZS5DYXRlZ29yeSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbn0pO1xuXG5leHBvcnQgY29uc3QgUmVjb3JkRmlsdGVyID0gSlNPTi5zdHJpbmdpZnkoe1xuICBmaWx0ZXI6IFtcbiAgICB7XG4gICAgICBjb250YWluczoge1xuICAgICAgICBkaXJlY3RvcnlUeXBlOiBEaXJlY3RvcnlUeXBlLlJlY29yZCxcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQWNjZXNzRmllbGRzID0gYFxuYWNjZXNzUm9sZXMge1xuICByb2xlXG4gIG1ldGhvZFxuICBpbmhlcml0ZWRGcm9tIHtcbiAgICBpZFxuICB9XG4gIHRydXN0ZWRQYXJ0eSB7XG4gICAgaWRcbiAgfVxuICBpc0lzc3VlclxufWA7XG5cbmNvbnN0IGRlc2NlbmRhbnREaXJlY3RvcmllcyA9IGBcbmRlc2NlbmRhbnREaXJlY3RvcmllcyhkZXB0aDogJHtERUZBVUxUX0RFU0NFTkRBTlRTX0RFUFRIfSwgcGxhaW5NZXRhOiAkY2F0ZWdvcnlGaWx0ZXIsIGFyY2hpdmVkOiBmYWxzZSkge1xuICByZWNvcmRzQ291bnQ6IGRpcmVjdG9yaWVzQ291bnQocGxhaW5NZXRhOiAkcmVjb3JkRmlsdGVyLCBhcmNoaXZlZDogZmFsc2UpXG59XG5gO1xuXG5leHBvcnQgY29uc3QgQ2F0ZWdvcnlGaWVsZHMgPSBgXG4gIGlkXG4gIGtleUlkXG4gIGFyY2hpdmVkXG4gIHBsYWluTWV0YVxuICBjaXBoZXJNZXRhXG4gICR7QWNjZXNzRmllbGRzfVxuICAke2Rlc2NlbmRhbnREaXJlY3Rvcmllc31cbmA7XG5cbmV4cG9ydCBjb25zdCBWYXVsdEZpZWxkcyA9IGBcbiAgaWRcbiAga2V5SWRcbiAgcGxhaW5NZXRhXG4gIGNpcGhlck1ldGFcbmA7XG5cbmV4cG9ydCBjb25zdCBHZXRSb290RGlyZWN0b3J5SWRzUXVlcnkgPSBncWxgXG4gIHF1ZXJ5IEdldFJvb3REaXJlY3RvcnlJZHNRdWVyeSgkYXJjaGl2ZWQ6IEJvb2xlYW4pIHtcbiAgICByb290RGlyZWN0b3JpZXMoYXJjaGl2ZWQ6ICRhcmNoaXZlZCkge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBpZFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgR2V0Q2F0ZWdvcmllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0Q2F0ZWdvcmllcygkdmF1bHRGaWx0ZXI6IExySlNPTkZpbHRlciEsICRjYXRlZ29yeUZpbHRlcjogTHJKU09ORmlsdGVyISwgJHJlY29yZEZpbHRlcjogTHJKU09ORmlsdGVyISwgJGFyY2hpdmVkOiBCb29sZWFuLCAkY2FjaGVkS2V5SWRzOiBbTHJSZWxheUlkSW5wdXQhXSlcbntcbiAgdmF1bHRzOiByb290RGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkdmF1bHRGaWx0ZXIpIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgY2hpbGREaXJlY3RvcnlMaW5rcyhwbGFpbk1ldGE6ICRjYXRlZ29yeUZpbHRlciwgb3JkZXJCeTogXCJjcmVhdGVkXCIsIGFyY2hpdmVkOiAkYXJjaGl2ZWQpIHtcbiAgICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICAgY2hpbGREaXJlY3Rvcnkge1xuICAgICAgICAgICAgICAgICR7Q2F0ZWdvcnlGaWVsZHN9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAga2V5R3JhcGgoY2FjaGVkS2V5SWRzOiAkY2FjaGVkS2V5SWRzKSB7XG4gICAgLi4uS2V5R3JhcGhGcmFnbWVudFxuICB9XG59XG4ke0tleUdyYXBoRnJhZ21lbnR9XG5gO1xuXG5leHBvcnQgY29uc3QgR2V0VmF1bHRzUXVlcnkgPSBncWxgXG5xdWVyeSBHZXRWYXVsdHMoJHBsYWluTWV0YUZpbHRlcjogTHJKU09ORmlsdGVyISwgJGNhY2hlZEtleUlkczogW0xyUmVsYXlJZElucHV0IV0pXG57XG4gIGxpc3Q6IHJvb3REaXJlY3RvcmllcyhwbGFpbk1ldGE6ICRwbGFpbk1ldGFGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgICR7VmF1bHRGaWVsZHN9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgfVxufVxuJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRUcnVzdGVkUGFydHlDYXRlZ29yaWVzUXVlcnlUeXBlIGV4dGVuZHMgSGFzS2V5R3JhcGgge1xuICB0cDoge1xuICAgIHNoYXJlZEl0ZW1zOiB7XG4gICAgICBsaXN0OiBIYXNFZGdlczxhbnk+O1xuICAgICAgcmVjb3JkczogSGFzRWRnZXM8YW55PjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgR2V0VHJ1c3RlZFBhcnR5Q2F0ZWdvcmllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0VHJ1c3RlZFBhcnR5Q2F0ZWdvcmllc1F1ZXJ5KCR0cnVzdGVkUGFydHlJZDogTHJSZWxheUlkSW5wdXQhLCAkY2F0ZWdvcnlGaWx0ZXI6IExySlNPTkZpbHRlciEsICRyZWNvcmRGaWx0ZXI6IExySlNPTkZpbHRlciEsICRjb250ZW50RmlsdGVyOiBMckpTT05GaWx0ZXIsICRjYWNoZWRLZXlJZHM6IFtMclJlbGF5SWRJbnB1dCFdKVxue1xuICB0cChpZDogJHRydXN0ZWRQYXJ0eUlkKSB7XG4gICAgc2hhcmVkSXRlbXMge1xuICAgICAgbGlzdDogZGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkY2F0ZWdvcnlGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICR7Q2F0ZWdvcnlGaWVsZHN9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWNvcmRzOiBkaXJlY3RvcmllcyhwbGFpbk1ldGE6ICRyZWNvcmRGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBrZXlJZFxuICAgICAgICAgICAgYXJjaGl2ZWRcbiAgICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICAgICAgY2lwaGVyTWV0YVxuICAgICAgICAgICAgY3JlYXRlZFxuICAgICAgICAgICAgbW9kaWZpZWRcbiAgICAgICAgICAgICR7QWNjZXNzRmllbGRzfVxuICAgICAgICAgICAgY29udGVudDogY2hpbGRGaWxlTGlua3MocGxhaW5NZXRhOiAkY29udGVudEZpbHRlcikge1xuICAgICAgICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAgICAgICBjaGlsZEZpbGUge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBhcmNoaXZlZFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2lwaGVyTWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAga2V5R3JhcGgoY2FjaGVkS2V5SWRzOiAkY2FjaGVkS2V5SWRzKSB7XG4gICAgLi4uS2V5R3JhcGhGcmFnbWVudFxuICB9XG59XG4ke0tleUdyYXBoRnJhZ21lbnR9XG5gO1xuXG5leHBvcnQgaW50ZXJmYWNlIEdldE15U2hhcmVkQ2F0ZWdvcmllc1F1ZXJ5VHlwZSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgdHA6IHtcbiAgICBteUl0ZW1zOiB7XG4gICAgICBsaXN0OiBIYXNFZGdlczxhbnk+O1xuICAgICAgcmVjb3JkczogSGFzRWRnZXM8YW55PjtcbiAgICB9O1xuICB9O1xufVxuXG5leHBvcnQgY29uc3QgR2V0TXlTaGFyZWRDYXRlZ29yaWVzUXVlcnkgPSBncWxgXG5xdWVyeSBHZXRNeVNoYXJlZENhdGVnb3JpZXNRdWVyeSgkdHJ1c3RlZFBhcnR5SWQ6IExyUmVsYXlJZElucHV0ISwgJGNhdGVnb3J5RmlsdGVyOiBMckpTT05GaWx0ZXIhLCAkcmVjb3JkRmlsdGVyOiBMckpTT05GaWx0ZXIhLCAkY29udGVudEZpbHRlcjogTHJKU09ORmlsdGVyLCAkY2FjaGVkS2V5SWRzOiBbTHJSZWxheUlkSW5wdXQhXSlcbntcbiAgdHAoaWQ6ICR0cnVzdGVkUGFydHlJZCkge1xuICAgIG15SXRlbXMge1xuICAgICAgbGlzdDogZGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkY2F0ZWdvcnlGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICR7Q2F0ZWdvcnlGaWVsZHN9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZWNvcmRzOiBkaXJlY3RvcmllcyhwbGFpbk1ldGE6ICRyZWNvcmRGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgICBrZXlJZFxuICAgICAgICAgICAgYXJjaGl2ZWRcbiAgICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICAgICAgY2lwaGVyTWV0YVxuICAgICAgICAgICAgY3JlYXRlZFxuICAgICAgICAgICAgbW9kaWZpZWRcbiAgICAgICAgICAgICR7QWNjZXNzRmllbGRzfVxuICAgICAgICAgICAgY29udGVudDogY2hpbGRGaWxlTGlua3MocGxhaW5NZXRhOiAkY29udGVudEZpbHRlcikge1xuICAgICAgICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAgICAgICBjaGlsZEZpbGUge1xuICAgICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgICAgICBhcmNoaXZlZFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50VmVyc2lvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGUge1xuICAgICAgICAgICAgICAgICAgICAgICAga2V5SWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluTWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgY2lwaGVyTWV0YVxuICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZWRcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAga2V5R3JhcGgoY2FjaGVkS2V5SWRzOiAkY2FjaGVkS2V5SWRzKSB7XG4gICAgLi4uS2V5R3JhcGhGcmFnbWVudFxuICB9XG59XG4ke0tleUdyYXBoRnJhZ21lbnR9XG5gO1xuXG5leHBvcnQgY29uc3QgcGFyZW50Q2F0ZWdvcmllc0ZpZWxkID0gKGRlcHRoID0gREVGQVVMVF9CUkVBRENSVU1CX0RFUFRIKSA9PiB7XG4gIGlmICghZGVwdGgpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIGBcbnBhcmVudENhdGVnb3JpZXM6IHBhcmVudERpcmVjdG9yeUxpbmtzKHBsYWluTWV0YTogJGNhdGVnb3J5RmlsdGVyKSB7XG4gIGVkZ2VzIHtcbiAgICBub2RlIHtcbiAgICAgIHBhcmVudERpcmVjdG9yeSB7XG4gICAgICAgIGlkXG4gICAgICAgIGtleUlkXG4gICAgICAgIGFyY2hpdmVkXG4gICAgICAgIHBsYWluTWV0YVxuICAgICAgICBjaXBoZXJNZXRhXG4gICAgICAgICR7cGFyZW50Q2F0ZWdvcmllc0ZpZWxkKGRlcHRoIC0gMSl9XG4gICAgICAgICR7QWNjZXNzRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuYDtcbn07XG5cbmV4cG9ydCBjb25zdCBHZXRDYXRlZ29yeVF1ZXJ5ID0gKFxuICBkZXB0aDogbnVtYmVyID0gREVGQVVMVF9CUkVBRENSVU1CX0RFUFRIXG4pID0+IGdxbGBcbnF1ZXJ5IEdldENhdGVnb3J5KFxuICAkaWQ6IExyUmVsYXlJZElucHV0ISxcbiAgJGNhdGVnb3J5RmlsdGVyOiBMckpTT05GaWx0ZXIhLFxuICAkcmVjb3JkRmlsdGVyOiBMckpTT05GaWx0ZXIhLFxuICAkY29udGVudEZpbHRlcjogTHJKU09ORmlsdGVyLFxuICAkY2FjaGVkS2V5SWRzOiBbTHJSZWxheUlkSW5wdXQhXSkge1xuICBjYXRlZ29yeTogZGlyZWN0b3J5KGlkOiAkaWQpIHtcbiAgICBpZFxuICAgIGtleUlkXG4gICAgYXJjaGl2ZWRcbiAgICBwbGFpbk1ldGFcbiAgICBjaXBoZXJNZXRhXG4gICAgJHtBY2Nlc3NGaWVsZHN9XG4gICAgJHtkZXNjZW5kYW50RGlyZWN0b3JpZXN9XG4gICAgJHtwYXJlbnRDYXRlZ29yaWVzRmllbGQoZGVwdGgpfVxuICAgIHN1YkNhdGVnb3JpZXM6IGNoaWxkRGlyZWN0b3J5TGlua3MocGxhaW5NZXRhOiAkY2F0ZWdvcnlGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiKSB7XG4gICAgICBlZGdlcyB7XG4gICAgICAgIG5vZGUge1xuICAgICAgICAgIGNoaWxkRGlyZWN0b3J5IHtcbiAgICAgICAgICAgICR7Q2F0ZWdvcnlGaWVsZHN9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJlY29yZHM6IGNoaWxkRGlyZWN0b3J5TGlua3MocGxhaW5NZXRhOiAkcmVjb3JkRmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBjaGlsZERpcmVjdG9yeSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAga2V5SWRcbiAgICAgICAgICAgIGFyY2hpdmVkXG4gICAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgICAgIGNpcGhlck1ldGFcbiAgICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAke0FjY2Vzc0ZpZWxkc31cbiAgICAgICAgICAgIGNvbnRlbnQ6IGNoaWxkRmlsZUxpbmtzKHBsYWluTWV0YTogJGNvbnRlbnRGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgZWRnZXMge1xuICAgICAgICAgICAgICAgIG5vZGUge1xuICAgICAgICAgICAgICAgICAgY2hpbGRGaWxlIHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWRcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleUlkXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgfVxufVxuJHtLZXlHcmFwaEZyYWdtZW50fSBgO1xuXG5leHBvcnQgY29uc3QgR2V0Q2F0ZWdvcnlLZXlJZFF1ZXJ5ID0gZ3FsYFxuICBxdWVyeSBHZXRDYXRlZ29yeUtleUlkUXVlcnkoXG4gICAgJGlkOiBMclJlbGF5SWRJbnB1dCFcbiAgICAkY2FjaGVkS2V5SWRzOiBbTHJSZWxheUlkSW5wdXQhXVxuICApIHtcbiAgICBjYXRlZ29yeTogZGlyZWN0b3J5KGlkOiAkaWQpIHtcbiAgICAgIGtleUlkXG4gICAgfVxuICAgIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgICAgLi4uS2V5R3JhcGhGcmFnbWVudFxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRnJhZ21lbnR9XG5gO1xuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ2F0ZWdvcnlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gQ3JlYXRlQ2F0ZWdvcnkoXG4gICAgJHBsYWluTWV0YTogTHJKU09OU3RyaW5nXG4gICAgJGNpcGhlck1ldGE6IFN0cmluZ1xuICAgICRwYXJlbnREaXJlY3RvcmllczogW1BhcmVudERpcmVjdG9yeUlucHV0IV1cbiAgICAkcGFyZW50Um9vdERpcmVjdG9yeTogUGFyZW50Um9vdERpcmVjdG9yeUlucHV0XG4gICkge1xuICAgIG5ldzogY3JlYXRlRGlyZWN0b3J5KFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgcGxhaW5NZXRhOiAkcGxhaW5NZXRhXG4gICAgICAgIGNpcGhlck1ldGE6ICRjaXBoZXJNZXRhXG4gICAgICAgIHBhcmVudERpcmVjdG9yaWVzOiAkcGFyZW50RGlyZWN0b3JpZXNcbiAgICAgICAgcGFyZW50Um9vdERpcmVjdG9yeTogJHBhcmVudFJvb3REaXJlY3RvcnlcbiAgICAgIH1cbiAgICApIHtcbiAgICAgIGNhdGVnb3J5OiBkaXJlY3Rvcnkge1xuICAgICAgICBpZFxuICAgICAgICBrZXlJZFxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZVZhdWx0TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIENyZWF0ZUNhdGVnb3J5KFxuICAgICRwbGFpbk1ldGE6IExySlNPTlN0cmluZ1xuICAgICRjaXBoZXJNZXRhOiBTdHJpbmdcbiAgICAkcGFyZW50Um9vdERpcmVjdG9yeTogUGFyZW50Um9vdERpcmVjdG9yeUlucHV0XG4gICkge1xuICAgIG5ldzogY3JlYXRlRGlyZWN0b3J5KFxuICAgICAgaW5wdXQ6IHtcbiAgICAgICAgcGxhaW5NZXRhOiAkcGxhaW5NZXRhXG4gICAgICAgIGNpcGhlck1ldGE6ICRjaXBoZXJNZXRhXG4gICAgICAgIHBhcmVudFJvb3REaXJlY3Rvcnk6ICRwYXJlbnRSb290RGlyZWN0b3J5XG4gICAgICB9XG4gICAgKSB7XG4gICAgICB2YXVsdDogZGlyZWN0b3J5IHtcbiAgICAgICAgaWRcbiAgICAgICAga2V5SWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVDYXRlZ29yeU11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBVcGRhdGVDYXRlZ29yeSgkaW5wdXQ6IFVwZGF0ZURpcmVjdG9yeUlucHV0ISkge1xuICAgIHVwZGF0ZURpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XG4gICAgICBkaXJlY3Rvcnkge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNhdGVnb3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIERlbGV0ZUNhdGVnb3J5KCRjYXRlZ29yeUlkOiBMclJlbGF5SWRJbnB1dCEpIHtcbiAgICBkZWxldGVEaXJlY3RvcnkoaW5wdXQ6IHsgZGlyZWN0b3J5SWQ6ICRjYXRlZ29yeUlkIH0pIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgQXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBBcmNoaXZlRGlyZWN0b3J5KCRpbnB1dDogQXJjaGl2ZURpcmVjdG9yeUlucHV0ISkge1xuICAgIGFyY2hpdmVEaXJlY3RvcnkoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgZGlyZWN0b3J5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBVbmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gVW5hcmNoaXZlRGlyZWN0b3J5KCRpbnB1dDogVW5hcmNoaXZlRGlyZWN0b3J5SW5wdXQhKSB7XG4gICAgdW5hcmNoaXZlRGlyZWN0b3J5KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGRpcmVjdG9yeSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuIl19
|
|
406
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuZ3FsLmpzIiwic291cmNlUm9vdCI6Ii9vcHQvYXRsYXNzaWFuL3BpcGVsaW5lcy9hZ2VudC9idWlsZC9wcm9qZWN0cy9jb3JlL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jYXRlZ29yeS9jYXRlZ29yeS5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDMUQsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBRzlCLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxDQUFDLENBQUM7QUFFM0MsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2QixnQ0FBZSxDQUFBO0lBQ2Ysc0NBQXFCLENBQUE7SUFDckIsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUpXLGFBQWEsS0FBYixhQUFhLFFBSXhCO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMvQyxNQUFNLEVBQUU7UUFDTjtZQUNFLFFBQVEsRUFBRTtnQkFDUixhQUFhLEVBQUUsYUFBYSxDQUFDLEtBQUs7Z0JBQ2xDLE9BQU8sRUFBRSxJQUFJO2FBQ2Q7U0FDRjtLQUNGO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDM0MsTUFBTSxFQUFFO1FBQ047WUFDRSxRQUFRLEVBQUU7Z0JBQ1IsYUFBYSxFQUFFLGFBQWEsQ0FBQyxRQUFRO2FBQ3RDO1NBQ0Y7S0FDRjtDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3pDLE1BQU0sRUFBRTtRQUNOO1lBQ0UsUUFBUSxFQUFFO2dCQUNSLGFBQWEsRUFBRSxhQUFhLENBQUMsTUFBTTthQUNwQztTQUNGO0tBQ0Y7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7Ozs7Ozs7Ozs7O0VBVzFCLENBQUM7QUFFSCxNQUFNLHFCQUFxQixHQUFHOytCQUNDLHlCQUF5Qjs7O0NBR3ZELENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7Ozs7OztJQU0xQixZQUFZO0lBQ1oscUJBQXFCO0NBQ3hCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7Ozs7O0NBSzFCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Q0FVMUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7OztrQkFVbkIsY0FBYzs7Ozs7Ozs7Ozs7O0VBWTlCLGdCQUFnQjtDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLEdBQUcsQ0FBQTs7Ozs7O1VBTXZCLFdBQVc7Ozs7Ozs7O0VBUW5CLGdCQUFnQjtDQUNqQixDQUFDO0FBV0YsTUFBTSxDQUFDLE1BQU0sOEJBQThCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7OztjQVFuQyxjQUFjOzs7Ozs7Ozs7Ozs7OztjQWNkLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBNkJ4QixnQkFBZ0I7Q0FDakIsQ0FBQztBQVdGLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Y0FRL0IsY0FBYzs7Ozs7Ozs7Ozs7Ozs7Y0FjZCxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQTZCeEIsZ0JBQWdCO0NBQ2pCLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLEtBQUssR0FBRyx3QkFBd0IsRUFBRSxFQUFFO0lBQ3hFLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLEVBQUUsQ0FBQztLQUNYO0lBQ0QsT0FBTzs7Ozs7Ozs7OztVQVVDLHFCQUFxQixDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7VUFDaEMsWUFBWTs7Ozs7Q0FLckIsQ0FBQztBQUNGLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQzlCLFFBQWdCLHdCQUF3QixFQUN4QyxFQUFFLENBQUMsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7O01BYUYsWUFBWTtNQUNaLHFCQUFxQjtNQUNyQixxQkFBcUIsQ0FBQyxLQUFLLENBQUM7Ozs7O2NBS3BCLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FnQmQsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2QnhCLGdCQUFnQixHQUFHLENBQUM7QUFFdEIsTUFBTSxDQUFDLE1BQU0scUJBQXFCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7SUFZcEMsZ0JBQWdCO0NBQ25CLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFCeEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1CckMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7Ozs7Q0FReEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLEdBQUcsQ0FBQTs7Ozs7O0NBTXhDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUTFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0NBUTVDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXNLZXlHcmFwaCB9IGZyb20gJy4uL2tleS9rZXkudHlwZXMnO1xuaW1wb3J0IHsgS2V5R3JhcGhGcmFnbWVudCB9IGZyb20gJy4uL19jb21tb24vcXVlcmllcy5ncWwnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgeyBIYXNLZXlHcmFwaEVkZ2VzLCBIYXNFZGdlcyB9IGZyb20gJy4uL19jb21tb24vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9CUkVBRENSVU1CX0RFUFRIID0gNTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFU0NFTkRBTlRTX0RFUFRIID0gNTtcblxuZXhwb3J0IGVudW0gRGlyZWN0b3J5VHlwZSB7XG4gIFZhdWx0ID0gJ3ZhdWx0JyxcbiAgQ2F0ZWdvcnkgPSAnY2F0ZWdvcnknLFxuICBSZWNvcmQgPSAncmVjb3JkJyxcbn1cblxuZXhwb3J0IGNvbnN0IERlZmF1bHRWYXVsdEZpbHRlciA9IEpTT04uc3RyaW5naWZ5KHtcbiAgZmlsdGVyOiBbXG4gICAge1xuICAgICAgY29udGFpbnM6IHtcbiAgICAgICAgZGlyZWN0b3J5VHlwZTogRGlyZWN0b3J5VHlwZS5WYXVsdCxcbiAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgXSxcbn0pO1xuXG5leHBvcnQgY29uc3QgQ2F0ZWdvcnlGaWx0ZXIgPSBKU09OLnN0cmluZ2lmeSh7XG4gIGZpbHRlcjogW1xuICAgIHtcbiAgICAgIGNvbnRhaW5zOiB7XG4gICAgICAgIGRpcmVjdG9yeVR5cGU6IERpcmVjdG9yeVR5cGUuQ2F0ZWdvcnksXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59KTtcblxuZXhwb3J0IGNvbnN0IFJlY29yZEZpbHRlciA9IEpTT04uc3RyaW5naWZ5KHtcbiAgZmlsdGVyOiBbXG4gICAge1xuICAgICAgY29udGFpbnM6IHtcbiAgICAgICAgZGlyZWN0b3J5VHlwZTogRGlyZWN0b3J5VHlwZS5SZWNvcmQsXG4gICAgICB9LFxuICAgIH0sXG4gIF0sXG59KTtcblxuZXhwb3J0IGNvbnN0IEFjY2Vzc0ZpZWxkcyA9IGBcbmFjY2Vzc1JvbGVzIHtcbiAgcm9sZVxuICBtZXRob2RcbiAgaW5oZXJpdGVkRnJvbSB7XG4gICAgaWRcbiAgfVxuICB0cnVzdGVkUGFydHkge1xuICAgIGlkXG4gIH1cbiAgaXNJc3N1ZXJcbn1gO1xuXG5jb25zdCBkZXNjZW5kYW50RGlyZWN0b3JpZXMgPSBgXG5kZXNjZW5kYW50RGlyZWN0b3JpZXMoZGVwdGg6ICR7REVGQVVMVF9ERVNDRU5EQU5UU19ERVBUSH0sIHBsYWluTWV0YTogJGNhdGVnb3J5RmlsdGVyLCBhcmNoaXZlZDogZmFsc2UpIHtcbiAgcmVjb3Jkc0NvdW50OiBkaXJlY3Rvcmllc0NvdW50KHBsYWluTWV0YTogJHJlY29yZEZpbHRlciwgYXJjaGl2ZWQ6IGZhbHNlKVxufVxuYDtcblxuZXhwb3J0IGNvbnN0IENhdGVnb3J5RmllbGRzID0gYFxuICBpZFxuICBrZXlJZFxuICBhcmNoaXZlZFxuICBwbGFpbk1ldGFcbiAgY2lwaGVyTWV0YVxuICAke0FjY2Vzc0ZpZWxkc31cbiAgJHtkZXNjZW5kYW50RGlyZWN0b3JpZXN9XG5gO1xuXG5leHBvcnQgY29uc3QgVmF1bHRGaWVsZHMgPSBgXG4gIGlkXG4gIGtleUlkXG4gIHBsYWluTWV0YVxuICBjaXBoZXJNZXRhXG5gO1xuXG5leHBvcnQgY29uc3QgR2V0Um9vdERpcmVjdG9yeUlkc1F1ZXJ5ID0gZ3FsYFxuICBxdWVyeSBHZXRSb290RGlyZWN0b3J5SWRzUXVlcnkoJGFyY2hpdmVkOiBCb29sZWFuKSB7XG4gICAgcm9vdERpcmVjdG9yaWVzKGFyY2hpdmVkOiAkYXJjaGl2ZWQpIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgaWRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEdldENhdGVnb3JpZXNRdWVyeSA9IGdxbGBcbnF1ZXJ5IEdldENhdGVnb3JpZXMoJHZhdWx0RmlsdGVyOiBMckpTT05GaWx0ZXIhLCAkY2F0ZWdvcnlGaWx0ZXI6IExySlNPTkZpbHRlciEsICRyZWNvcmRGaWx0ZXI6IExySlNPTkZpbHRlciEsICRhcmNoaXZlZDogQm9vbGVhbiwgJGNhY2hlZEtleUlkczogW0xyUmVsYXlJZElucHV0IV0pXG57XG4gIHZhdWx0czogcm9vdERpcmVjdG9yaWVzKHBsYWluTWV0YTogJHZhdWx0RmlsdGVyKSB7XG4gICAgZWRnZXMge1xuICAgICAgbm9kZSB7XG4gICAgICAgIGNoaWxkRGlyZWN0b3J5TGlua3MocGxhaW5NZXRhOiAkY2F0ZWdvcnlGaWx0ZXIsIG9yZGVyQnk6IFwiY3JlYXRlZFwiLCBhcmNoaXZlZDogJGFyY2hpdmVkKSB7XG4gICAgICAgICAgZWRnZXMge1xuICAgICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAgIGNoaWxkRGlyZWN0b3J5IHtcbiAgICAgICAgICAgICAgICAke0NhdGVnb3J5RmllbGRzfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgfVxufVxuJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGNvbnN0IEdldFZhdWx0c1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0VmF1bHRzKCRwbGFpbk1ldGFGaWx0ZXI6IExySlNPTkZpbHRlciEsICRjYWNoZWRLZXlJZHM6IFtMclJlbGF5SWRJbnB1dCFdKVxue1xuICBsaXN0OiByb290RGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkcGxhaW5NZXRhRmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke1ZhdWx0RmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBrZXlHcmFwaChjYWNoZWRLZXlJZHM6ICRjYWNoZWRLZXlJZHMpIHtcbiAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gIH1cbn1cbiR7S2V5R3JhcGhGcmFnbWVudH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0VHJ1c3RlZFBhcnR5Q2F0ZWdvcmllc1F1ZXJ5VHlwZSBleHRlbmRzIEhhc0tleUdyYXBoIHtcbiAgdHA6IHtcbiAgICBzaGFyZWRJdGVtczoge1xuICAgICAgbGlzdDogSGFzRWRnZXM8YW55PjtcbiAgICAgIHJlY29yZHM6IEhhc0VkZ2VzPGFueT47XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeSA9IGdxbGBcbnF1ZXJ5IEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeSgkdHJ1c3RlZFBhcnR5SWQ6IExyUmVsYXlJZElucHV0ISwgJGNhdGVnb3J5RmlsdGVyOiBMckpTT05GaWx0ZXIhLCAkcmVjb3JkRmlsdGVyOiBMckpTT05GaWx0ZXIhLCAkY29udGVudEZpbHRlcjogTHJKU09ORmlsdGVyLCAkY2FjaGVkS2V5SWRzOiBbTHJSZWxheUlkSW5wdXQhXSlcbntcbiAgdHAoaWQ6ICR0cnVzdGVkUGFydHlJZCkge1xuICAgIHNoYXJlZEl0ZW1zIHtcbiAgICAgIGxpc3Q6IGRpcmVjdG9yaWVzKHBsYWluTWV0YTogJGNhdGVnb3J5RmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAke0NhdGVnb3J5RmllbGRzfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVjb3JkczogZGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkcmVjb3JkRmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAga2V5SWRcbiAgICAgICAgICAgIGFyY2hpdmVkXG4gICAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgICAgIGNpcGhlck1ldGFcbiAgICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAke0FjY2Vzc0ZpZWxkc31cbiAgICAgICAgICAgIGNvbnRlbnQ6IGNoaWxkRmlsZUxpbmtzKHBsYWluTWV0YTogJGNvbnRlbnRGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgZWRnZXMge1xuICAgICAgICAgICAgICAgIG5vZGUge1xuICAgICAgICAgICAgICAgICAgY2hpbGRGaWxlIHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWRcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleUlkXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgfVxufVxuJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGludGVyZmFjZSBHZXRNeVNoYXJlZENhdGVnb3JpZXNRdWVyeVR5cGUgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XG4gIHRwOiB7XG4gICAgbXlJdGVtczoge1xuICAgICAgbGlzdDogSGFzRWRnZXM8YW55PjtcbiAgICAgIHJlY29yZHM6IEhhc0VkZ2VzPGFueT47XG4gICAgfTtcbiAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IEdldE15U2hhcmVkQ2F0ZWdvcmllc1F1ZXJ5ID0gZ3FsYFxucXVlcnkgR2V0TXlTaGFyZWRDYXRlZ29yaWVzUXVlcnkoJHRydXN0ZWRQYXJ0eUlkOiBMclJlbGF5SWRJbnB1dCEsICRjYXRlZ29yeUZpbHRlcjogTHJKU09ORmlsdGVyISwgJHJlY29yZEZpbHRlcjogTHJKU09ORmlsdGVyISwgJGNvbnRlbnRGaWx0ZXI6IExySlNPTkZpbHRlciwgJGNhY2hlZEtleUlkczogW0xyUmVsYXlJZElucHV0IV0pXG57XG4gIHRwKGlkOiAkdHJ1c3RlZFBhcnR5SWQpIHtcbiAgICBteUl0ZW1zIHtcbiAgICAgIGxpc3Q6IGRpcmVjdG9yaWVzKHBsYWluTWV0YTogJGNhdGVnb3J5RmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICAke0NhdGVnb3J5RmllbGRzfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmVjb3JkczogZGlyZWN0b3JpZXMocGxhaW5NZXRhOiAkcmVjb3JkRmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgICBlZGdlcyB7XG4gICAgICAgICAgbm9kZSB7XG4gICAgICAgICAgICBpZFxuICAgICAgICAgICAga2V5SWRcbiAgICAgICAgICAgIGFyY2hpdmVkXG4gICAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgICAgIGNpcGhlck1ldGFcbiAgICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAke0FjY2Vzc0ZpZWxkc31cbiAgICAgICAgICAgIGNvbnRlbnQ6IGNoaWxkRmlsZUxpbmtzKHBsYWluTWV0YTogJGNvbnRlbnRGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgZWRnZXMge1xuICAgICAgICAgICAgICAgIG5vZGUge1xuICAgICAgICAgICAgICAgICAgY2hpbGRGaWxlIHtcbiAgICAgICAgICAgICAgICAgICAgaWRcbiAgICAgICAgICAgICAgICAgICAgYXJjaGl2ZWRcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFZlcnNpb24ge1xuICAgICAgICAgICAgICAgICAgICAgIHN0YXRlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleUlkXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpcGhlck1ldGFcbiAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgfVxufVxuJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGNvbnN0IHBhcmVudENhdGVnb3JpZXNGaWVsZCA9IChkZXB0aCA9IERFRkFVTFRfQlJFQURDUlVNQl9ERVBUSCkgPT4ge1xuICBpZiAoIWRlcHRoKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIHJldHVybiBgXG5wYXJlbnRDYXRlZ29yaWVzOiBwYXJlbnREaXJlY3RvcnlMaW5rcyhwbGFpbk1ldGE6ICRjYXRlZ29yeUZpbHRlcikge1xuICBlZGdlcyB7XG4gICAgbm9kZSB7XG4gICAgICBwYXJlbnREaXJlY3Rvcnkge1xuICAgICAgICBpZFxuICAgICAgICBrZXlJZFxuICAgICAgICBhcmNoaXZlZFxuICAgICAgICBwbGFpbk1ldGFcbiAgICAgICAgY2lwaGVyTWV0YVxuICAgICAgICAke3BhcmVudENhdGVnb3JpZXNGaWVsZChkZXB0aCAtIDEpfVxuICAgICAgICAke0FjY2Vzc0ZpZWxkc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmA7XG59O1xuXG5leHBvcnQgY29uc3QgR2V0Q2F0ZWdvcnlRdWVyeSA9IChcbiAgZGVwdGg6IG51bWJlciA9IERFRkFVTFRfQlJFQURDUlVNQl9ERVBUSFxuKSA9PiBncWxgXG5xdWVyeSBHZXRDYXRlZ29yeShcbiAgJGlkOiBMclJlbGF5SWRJbnB1dCEsXG4gICRjYXRlZ29yeUZpbHRlcjogTHJKU09ORmlsdGVyISxcbiAgJHJlY29yZEZpbHRlcjogTHJKU09ORmlsdGVyISxcbiAgJGNvbnRlbnRGaWx0ZXI6IExySlNPTkZpbHRlcixcbiAgJGNhY2hlZEtleUlkczogW0xyUmVsYXlJZElucHV0IV0pIHtcbiAgY2F0ZWdvcnk6IGRpcmVjdG9yeShpZDogJGlkKSB7XG4gICAgaWRcbiAgICBrZXlJZFxuICAgIGFyY2hpdmVkXG4gICAgcGxhaW5NZXRhXG4gICAgY2lwaGVyTWV0YVxuICAgICR7QWNjZXNzRmllbGRzfVxuICAgICR7ZGVzY2VuZGFudERpcmVjdG9yaWVzfVxuICAgICR7cGFyZW50Q2F0ZWdvcmllc0ZpZWxkKGRlcHRoKX1cbiAgICBzdWJDYXRlZ29yaWVzOiBjaGlsZERpcmVjdG9yeUxpbmtzKHBsYWluTWV0YTogJGNhdGVnb3J5RmlsdGVyLCBvcmRlckJ5OiBcImNyZWF0ZWRcIikge1xuICAgICAgZWRnZXMge1xuICAgICAgICBub2RlIHtcbiAgICAgICAgICBjaGlsZERpcmVjdG9yeSB7XG4gICAgICAgICAgICAke0NhdGVnb3J5RmllbGRzfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZWNvcmRzOiBjaGlsZERpcmVjdG9yeUxpbmtzKHBsYWluTWV0YTogJHJlY29yZEZpbHRlciwgb3JkZXJCeTogXCJjcmVhdGVkXCIpIHtcbiAgICAgIGVkZ2VzIHtcbiAgICAgICAgbm9kZSB7XG4gICAgICAgICAgY2hpbGREaXJlY3Rvcnkge1xuICAgICAgICAgICAgaWRcbiAgICAgICAgICAgIGtleUlkXG4gICAgICAgICAgICBhcmNoaXZlZFxuICAgICAgICAgICAgcGxhaW5NZXRhXG4gICAgICAgICAgICBjaXBoZXJNZXRhXG4gICAgICAgICAgICBjcmVhdGVkXG4gICAgICAgICAgICBtb2RpZmllZFxuICAgICAgICAgICAgJHtBY2Nlc3NGaWVsZHN9XG4gICAgICAgICAgICBjb250ZW50OiBjaGlsZEZpbGVMaW5rcyhwbGFpbk1ldGE6ICRjb250ZW50RmlsdGVyKSB7XG4gICAgICAgICAgICAgIGVkZ2VzIHtcbiAgICAgICAgICAgICAgICBub2RlIHtcbiAgICAgICAgICAgICAgICAgIGNoaWxkRmlsZSB7XG4gICAgICAgICAgICAgICAgICAgIGlkXG4gICAgICAgICAgICAgICAgICAgIGFyY2hpdmVkXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRWZXJzaW9uIHtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXlJZFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5NZXRhXG4gICAgICAgICAgICAgICAgICAgICAgICBjaXBoZXJNZXRhXG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkXG4gICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllZFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBrZXlHcmFwaChjYWNoZWRLZXlJZHM6ICRjYWNoZWRLZXlJZHMpIHtcbiAgICAuLi5LZXlHcmFwaEZyYWdtZW50XG4gIH1cbn1cbiR7S2V5R3JhcGhGcmFnbWVudH0gYDtcblxuZXhwb3J0IGNvbnN0IEdldENhdGVnb3J5S2V5SWRRdWVyeSA9IGdxbGBcbiAgcXVlcnkgR2V0Q2F0ZWdvcnlLZXlJZFF1ZXJ5KFxuICAgICRpZDogTHJSZWxheUlkSW5wdXQhXG4gICAgJGNhY2hlZEtleUlkczogW0xyUmVsYXlJZElucHV0IV1cbiAgKSB7XG4gICAgY2F0ZWdvcnk6IGRpcmVjdG9yeShpZDogJGlkKSB7XG4gICAgICBrZXlJZFxuICAgIH1cbiAgICBrZXlHcmFwaChjYWNoZWRLZXlJZHM6ICRjYWNoZWRLZXlJZHMpIHtcbiAgICAgIC4uLktleUdyYXBoRnJhZ21lbnRcbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZyYWdtZW50fVxuYDtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUNhdGVnb3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIENyZWF0ZUNhdGVnb3J5KFxuICAgICRwbGFpbk1ldGE6IExySlNPTlN0cmluZ1xuICAgICRjaXBoZXJNZXRhOiBTdHJpbmdcbiAgICAkcGFyZW50RGlyZWN0b3JpZXM6IFtQYXJlbnREaXJlY3RvcnlJbnB1dCFdXG4gICAgJHBhcmVudFJvb3REaXJlY3Rvcnk6IFBhcmVudFJvb3REaXJlY3RvcnlJbnB1dFxuICApIHtcbiAgICBuZXc6IGNyZWF0ZURpcmVjdG9yeShcbiAgICAgIGlucHV0OiB7XG4gICAgICAgIHBsYWluTWV0YTogJHBsYWluTWV0YVxuICAgICAgICBjaXBoZXJNZXRhOiAkY2lwaGVyTWV0YVxuICAgICAgICBwYXJlbnREaXJlY3RvcmllczogJHBhcmVudERpcmVjdG9yaWVzXG4gICAgICAgIHBhcmVudFJvb3REaXJlY3Rvcnk6ICRwYXJlbnRSb290RGlyZWN0b3J5XG4gICAgICB9XG4gICAgKSB7XG4gICAgICBjYXRlZ29yeTogZGlyZWN0b3J5IHtcbiAgICAgICAgaWRcbiAgICAgICAga2V5SWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBDcmVhdGVWYXVsdE11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBDcmVhdGVDYXRlZ29yeShcbiAgICAkcGxhaW5NZXRhOiBMckpTT05TdHJpbmdcbiAgICAkY2lwaGVyTWV0YTogU3RyaW5nXG4gICAgJHBhcmVudFJvb3REaXJlY3Rvcnk6IFBhcmVudFJvb3REaXJlY3RvcnlJbnB1dFxuICApIHtcbiAgICBuZXc6IGNyZWF0ZURpcmVjdG9yeShcbiAgICAgIGlucHV0OiB7XG4gICAgICAgIHBsYWluTWV0YTogJHBsYWluTWV0YVxuICAgICAgICBjaXBoZXJNZXRhOiAkY2lwaGVyTWV0YVxuICAgICAgICBwYXJlbnRSb290RGlyZWN0b3J5OiAkcGFyZW50Um9vdERpcmVjdG9yeVxuICAgICAgfVxuICAgICkge1xuICAgICAgdmF1bHQ6IGRpcmVjdG9yeSB7XG4gICAgICAgIGlkXG4gICAgICAgIGtleUlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVXBkYXRlQ2F0ZWdvcnlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gVXBkYXRlQ2F0ZWdvcnkoJGlucHV0OiBVcGRhdGVEaXJlY3RvcnlJbnB1dCEpIHtcbiAgICB1cGRhdGVEaXJlY3RvcnkoaW5wdXQ6ICRpbnB1dCkge1xuICAgICAgZGlyZWN0b3J5IHtcbiAgICAgICAgaWRcbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBjb25zdCBEZWxldGVDYXRlZ29yeU11dGF0aW9uID0gZ3FsYFxuICBtdXRhdGlvbiBEZWxldGVDYXRlZ29yeSgkY2F0ZWdvcnlJZDogTHJSZWxheUlkSW5wdXQhKSB7XG4gICAgZGVsZXRlRGlyZWN0b3J5KGlucHV0OiB7IGRpcmVjdG9yeUlkOiAkY2F0ZWdvcnlJZCB9KSB7XG4gICAgICBpZFxuICAgIH1cbiAgfVxuYDtcblxuZXhwb3J0IGNvbnN0IEFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbiA9IGdxbGBcbiAgbXV0YXRpb24gQXJjaGl2ZURpcmVjdG9yeSgkaW5wdXQ6IEFyY2hpdmVEaXJlY3RvcnlJbnB1dCEpIHtcbiAgICBhcmNoaXZlRGlyZWN0b3J5KGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGRpcmVjdG9yeSB7XG4gICAgICAgIGlkXG4gICAgICB9XG4gICAgfVxuICB9XG5gO1xuXG5leHBvcnQgY29uc3QgVW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIFVuYXJjaGl2ZURpcmVjdG9yeSgkaW5wdXQ6IFVuYXJjaGl2ZURpcmVjdG9yeUlucHV0ISkge1xuICAgIHVuYXJjaGl2ZURpcmVjdG9yeShpbnB1dDogJGlucHV0KSB7XG4gICAgICBkaXJlY3Rvcnkge1xuICAgICAgICBpZFxuICAgICAgfVxuICAgIH1cbiAgfVxuYDtcbiJdfQ==
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { __awaiter } from "tslib";
|
|
2
2
|
import { Injectable } from '@angular/core';
|
|
3
3
|
import { LrApolloService } from '../api/lr-apollo.service';
|
|
4
|
-
import { KeyMetaService } from '../
|
|
4
|
+
import { KeyMetaService } from '../key/key-meta.service';
|
|
5
5
|
import { RecordContentFilter } from '../record/record.gql';
|
|
6
6
|
import { GetRootDirectoryIdsQuery, DefaultVaultFilter, CategoryFilter, CreateVaultMutation, CreateCategoryMutation, DeleteCategoryMutation, DirectoryType, GetCategoriesQuery, GetCategoryQuery, GetMySharedCategoriesQuery, GetTrustedPartyCategoriesQuery, RecordFilter, UpdateCategoryMutation, UnarchiveDirectoryMutation, ArchiveDirectoryMutation, GetVaultsQuery, } from './category.gql';
|
|
7
7
|
import { AccessLevel, } from './category.types';
|
|
8
8
|
import { LrBadStateException } from '../_common/exceptions';
|
|
9
|
-
import { KeyGraphService } from '../
|
|
9
|
+
import { KeyGraphService } from '../key/key-graph.service';
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "../api/lr-apollo.service";
|
|
12
|
-
import * as i2 from "../
|
|
13
|
-
import * as i3 from "../
|
|
12
|
+
import * as i2 from "../key/key-meta.service";
|
|
13
|
+
import * as i3 from "../key/key-graph.service";
|
|
14
14
|
export class CategoryService {
|
|
15
15
|
constructor(lrApollo, keyMetaService, keyGraph) {
|
|
16
16
|
this.lrApollo = lrApollo;
|
|
@@ -68,7 +68,7 @@ export class CategoryService {
|
|
|
68
68
|
}
|
|
69
69
|
getTrustedPartyCategories(trustedPartyId) {
|
|
70
70
|
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
-
const { tp
|
|
71
|
+
const { tp } = yield this.lrApollo.query({
|
|
72
72
|
query: GetTrustedPartyCategoriesQuery,
|
|
73
73
|
variables: {
|
|
74
74
|
trustedPartyId,
|
|
@@ -387,4 +387,4 @@ CategoryService.ctorParameters = () => [
|
|
|
387
387
|
{ type: KeyMetaService },
|
|
388
388
|
{ type: KeyGraphService }
|
|
389
389
|
];
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2F0ZWdvcnkvY2F0ZWdvcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFFMUIsOEJBQThCLEVBRTlCLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsV0FBVyxHQU9aLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7OztBQUtwRSxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUNVLFFBQXlCLEVBQ3pCLGNBQThCLEVBQzlCLFFBQXlCO1FBRnpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNoQyxDQUFDO0lBRVMsbUJBQW1CLENBQzlCLFFBQStCLElB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QUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7NkJBQ2IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7NkJBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDWCxjQUFjLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUU7NEJBQ25ELFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSTs0QkFDbkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVzs0QkFDckMsYUFBYSxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFO3lCQUNyRCxDQUFDLENBQUM7d0JBQ1AsQ0FBQyxDQUFDLEVBQUU7aUJBQ1AsQ0FBQzthQUNIO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxJQUFtQixDQUFDO2FBQzVCO1FBQ0gsQ0FBQztLQUFBOzs7O1lBM2NGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBdENRLGVBQWU7WUFDZixjQUFjO1lBaUNkLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNvcmRDb250ZW50RmlsdGVyIH0gZnJvbSAnLi4vcmVjb3JkL3JlY29yZC5ncWwnO1xuaW1wb3J0IHsgSGFzRWRnZXMsIEhhc0tleUdyYXBoRWRnZXMgfSBmcm9tICcuLi9fY29tbW9uL3R5cGVzJztcbmltcG9ydCB7XG4gIEdldFJvb3REaXJlY3RvcnlJZHNRdWVyeSxcbiAgRGVmYXVsdFZhdWx0RmlsdGVyLFxuICBDYXRlZ29yeUZpbHRlcixcbiAgQ3JlYXRlVmF1bHRNdXRhdGlvbixcbiAgQ3JlYXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgRGVsZXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgRGlyZWN0b3J5VHlwZSxcbiAgR2V0Q2F0ZWdvcmllc1F1ZXJ5LFxuICBHZXRDYXRlZ29yeVF1ZXJ5LFxuICBHZXRNeVNoYXJlZENhdGVnb3JpZXNRdWVyeSxcbiAgR2V0TXlTaGFyZWRDYXRlZ29yaWVzUXVlcnlUeXBlLFxuICBHZXRUcnVzdGVkUGFydHlDYXRlZ29yaWVzUXVlcnksXG4gIEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeVR5cGUsXG4gIFJlY29yZEZpbHRlcixcbiAgVXBkYXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgVW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24sXG4gIEFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgR2V0VmF1bHRzUXVlcnksXG59IGZyb20gJy4vY2F0ZWdvcnkuZ3FsJztcbmltcG9ydCB7XG4gIEFjY2Vzc0xldmVsLFxuICBDYXRlZ29yeSxcbiAgTmV3Q2F0ZWdvcnksXG4gIFVwZGF0ZWRDYXRlZ29yeSxcbiAgVmF1bHRDYXRlZ29yeSxcbiAgVmF1bHRSZWNvcmQsXG4gIFZhdWx0LFxufSBmcm9tICcuL2NhdGVnb3J5LnR5cGVzJztcbmltcG9ydCB7IExyQmFkU3RhdGVFeGNlcHRpb24gfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS1ncmFwaC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENhdGVnb3J5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSb290RGlyZWN0b3J5SWRzKFxuICAgIGlucHV0OiB7IGFyY2hpdmVkOiBib29sZWFuIH0gPSBudWxsXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCB7IHJvb3REaXJlY3RvcmllcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRSb290RGlyZWN0b3J5SWRzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgYXJjaGl2ZWQ6IGlucHV0ICYmIGlucHV0LmFyY2hpdmVkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gcm9vdERpcmVjdG9yaWVzLmVkZ2VzLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0VmF1bHQoKTogUHJvbWlzZTxWYXVsdD4ge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxIYXNLZXlHcmFwaEVkZ2VzPGFueT4+KHtcbiAgICAgIHF1ZXJ5OiBHZXRWYXVsdHNRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwbGFpbk1ldGFGaWx0ZXI6IERlZmF1bHRWYXVsdEZpbHRlcixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWZhdWx0VmF1bHRzID0gYXdhaXQgdGhpcy5tYXBWYXVsdHMobGlzdCk7XG4gICAgaWYgKGRlZmF1bHRWYXVsdHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oJ1RoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGRlZmF1bHQgdmF1bHRzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYXVsdHNbMF0gfHwgbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXRlZ29yaWVzKFxuICAgIGlucHV0OiB7IGFyY2hpdmVkOiBib29sZWFuIH0gPSBudWxsXG4gICk6IFByb21pc2U8Q2F0ZWdvcnlbXT4ge1xuICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxIYXNLZXlHcmFwaEVkZ2VzPGFueT4+KHtcbiAgICAgIHF1ZXJ5OiBHZXRDYXRlZ29yaWVzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgdmF1bHRGaWx0ZXI6IERlZmF1bHRWYXVsdEZpbHRlcixcbiAgICAgICAgY2F0ZWdvcnlGaWx0ZXI6IENhdGVnb3J5RmlsdGVyLFxuICAgICAgICByZWNvcmRGaWx0ZXI6IFJlY29yZEZpbHRlcixcbiAgICAgICAgYXJjaGl2ZWQ6IGlucHV0ICYmIGlucHV0LmFyY2hpdmVkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChyZXMudmF1bHRzLmVkZ2VzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZFN0YXRlRXhjZXB0aW9uKCdUaGVyZSBpcyBtb3JlIHRoYW4gb25lIGRlZmF1bHQgdmF1bHQnKTtcbiAgICB9IGVsc2UgaWYgKHJlcy52YXVsdHMuZWRnZXMubGVuZ3RoIDwgMSkge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgaXMgbm8gZGVmYXVsdCB2YXVsdC4nKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwQ2F0ZWdvcmllcyhcbiAgICAgICAgcmVzLnZhdWx0cy5lZGdlc1swXS5ub2RlLmNoaWxkRGlyZWN0b3J5TGlua3NcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXMoXG4gICAgdHJ1c3RlZFBhcnR5SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXTsgcmVjb3Jkcz86IFZhdWx0UmVjb3JkW10gfT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHRwLFxuICAgIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeVR5cGU+KHtcbiAgICAgIHF1ZXJ5OiBHZXRUcnVzdGVkUGFydHlDYXRlZ29yaWVzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgdHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIGNhdGVnb3J5RmlsdGVyOiBDYXRlZ29yeUZpbHRlcixcbiAgICAgICAgcmVjb3JkRmlsdGVyOiBSZWNvcmRGaWx0ZXIsXG4gICAgICAgIGNvbnRlbnRGaWx0ZXI6IFJlY29yZENvbnRlbnRGaWx0ZXIsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBjYXRlZ29yaWVzOiBhd2FpdCB0aGlzLm1hcENhdGVnb3JpZXModHAuc2hhcmVkSXRlbXMubGlzdCksXG4gICAgICByZWNvcmRzOiBhd2FpdCB0aGlzLm1hcFJlY29yZHModHAuc2hhcmVkSXRlbXMucmVjb3JkcyksXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRNeVNoYXJlZENhdGVnb3JpZXMoXG4gICAgdHJ1c3RlZFBhcnR5SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXTsgcmVjb3Jkcz86IFZhdWx0UmVjb3JkW10gfT4ge1xuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8R2V0TXlTaGFyZWRDYXRlZ29yaWVzUXVlcnlUeXBlPih7XG4gICAgICBxdWVyeTogR2V0TXlTaGFyZWRDYXRlZ29yaWVzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgdHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgIGNhdGVnb3J5RmlsdGVyOiBDYXRlZ29yeUZpbHRlcixcbiAgICAgICAgcmVjb3JkRmlsdGVyOiBSZWNvcmRGaWx0ZXIsXG4gICAgICAgIGNvbnRlbnRGaWx0ZXI6IFJlY29yZENvbnRlbnRGaWx0ZXIsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBjYXRlZ29yaWVzOiBhd2FpdCB0aGlzLm1hcENhdGVnb3JpZXModHAubXlJdGVtcy5saXN0KSxcbiAgICAgIHJlY29yZHM6IGF3YWl0IHRoaXMubWFwUmVjb3Jkcyh0cC5teUl0ZW1zLnJlY29yZHMpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0Q2F0ZWdvcnkoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTxWYXVsdENhdGVnb3J5PiB7XG4gICAgY29uc3QgeyBjYXRlZ29yeSB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRDYXRlZ29yeVF1ZXJ5KCksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaWQ6IGNhdGVnb3J5SWQsXG4gICAgICAgIGNhdGVnb3J5RmlsdGVyOiBDYXRlZ29yeUZpbHRlcixcbiAgICAgICAgcmVjb3JkRmlsdGVyOiBSZWNvcmRGaWx0ZXIsXG4gICAgICAgIGNvbnRlbnRGaWx0ZXI6IFJlY29yZENvbnRlbnRGaWx0ZXIsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNhdGVnb3J5OiB7XG4gICAgICAgIC4uLihhd2FpdCB0aGlzLm1hcENhdGVnb3J5KGNhdGVnb3J5KSksXG4gICAgICAgIHBhcmVudHM6IGF3YWl0IHRoaXMubWFwUGFyZW50Q2F0ZWdvcmllcyhjYXRlZ29yeSksXG4gICAgICB9LFxuICAgICAgc3ViQ2F0ZWdvcmllczogYXdhaXQgdGhpcy5tYXBDYXRlZ29yaWVzKGNhdGVnb3J5LnN1YkNhdGVnb3JpZXMpLFxuICAgICAgcmVjb3JkczogYXdhaXQgdGhpcy5tYXBSZWNvcmRzKGNhdGVnb3J5LnJlY29yZHMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcFZhdWx0cyhsaXN0OiBIYXNFZGdlczxhbnk+KTogUHJvbWlzZTxWYXVsdFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsPFZhdWx0PihcbiAgICAgIGxpc3QuZWRnZXMubWFwKChlZGdlKSA9PiB0aGlzLm1hcFZhdWx0KGVkZ2Uubm9kZSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgbWFwQ2F0ZWdvcmllcyhsaXN0OiBIYXNFZGdlczxhbnk+KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsPENhdGVnb3J5PihcbiAgICAgICAgbGlzdC5lZGdlc1xuICAgICAgICAgIC5tYXAoKHgpID0+IHgubm9kZSlcbiAgICAgICAgICAubWFwKCh4KSA9PiB4LmNoaWxkRGlyZWN0b3J5IHx8IHgpXG4gICAgICAgICAgLm1hcChcbiAgICAgICAgICAgIChub2RlOiB7XG4gICAgICAgICAgICAgIGlkO1xuICAgICAgICAgICAgICBrZXlJZDtcbiAgICAgICAgICAgICAgcGxhaW5NZXRhO1xuICAgICAgICAgICAgICBjaXBoZXJNZXRhO1xuICAgICAgICAgICAgICBkZXNjZW5kYW50RGlyZWN0b3JpZXM7XG4gICAgICAgICAgICAgIGFjY2Vzc1JvbGVzO1xuICAgICAgICAgICAgICBhcmNoaXZlZDtcbiAgICAgICAgICAgIH0pID0+IHRoaXMubWFwQ2F0ZWdvcnkobm9kZSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICAgICAgLmZpbHRlcigoeCkgPT4geClcbiAgICAgIC5zb3J0KCh4LCB5KSA9PiAoeC5uYW1lID09PSB5Lm5hbWUgPyAwIDogeC5uYW1lID4geS5uYW1lID8gMSA6IC0xKSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcFJlY29yZHMobGlzdDogSGFzRWRnZXM8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbDxWYXVsdFJlY29yZD4oXG4gICAgICAgIGxpc3QuZWRnZXNcbiAgICAgICAgICAubWFwKCh4KSA9PiB4Lm5vZGUpXG4gICAgICAgICAgLm1hcCgoeCkgPT4geC5jaGlsZERpcmVjdG9yeSB8fCB4KVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAobm9kZToge1xuICAgICAgICAgICAgICBpZDtcbiAgICAgICAgICAgICAga2V5SWQ7XG4gICAgICAgICAgICAgIHBsYWluTWV0YTtcbiAgICAgICAgICAgICAgY2lwaGVyTWV0YTtcbiAgICAgICAgICAgICAgY3JlYXRlZDtcbiAgICAgICAgICAgICAgbW9kaWZpZWQ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ7XG4gICAgICAgICAgICAgIGFjY2Vzc1JvbGVzO1xuICAgICAgICAgICAgICBhcmNoaXZlZDtcbiAgICAgICAgICAgIH0pID0+IHRoaXMubWFwUmVjb3JkKG5vZGUpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgpXG4gICAgICAuc29ydCgoeCwgeSkgPT4gKHgubmFtZSA9PT0geS5uYW1lID8gMCA6IHgubmFtZSA+IHkubmFtZSA/IDEgOiAtMSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZURlZmF1bHRWYXVsdCgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNlY3VyZUNvbnRlbnQgPSAnJztcbiAgICBjb25zdCB3cmFwcGVkQ29udGVudCA9IGF3YWl0IHRoaXMua2V5TWV0YVNlcnZpY2Uud3JhcENvbnRlbnQoc2VjdXJlQ29udGVudCk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZVZhdWx0TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGxhaW5NZXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZGlyZWN0b3J5VHlwZTogRGlyZWN0b3J5VHlwZS5WYXVsdCxcbiAgICAgICAgICBkZWZhdWx0OiB0cnVlLFxuICAgICAgICB9KSxcbiAgICAgICAgY2lwaGVyTWV0YTogd3JhcHBlZENvbnRlbnQuY2lwaGVyTWV0YSxcbiAgICAgICAgcGFyZW50Um9vdERpcmVjdG9yeTogd3JhcHBlZENvbnRlbnQucm9vdEtleSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2UubmV3LnZhdWx0LmlkO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGNyZWF0ZUNhdGVnb3J5KG5ld0NhdGVnb3J5OiBOZXdDYXRlZ29yeSk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgc2VjdXJlQ29udGVudCA9IHtcbiAgICAgIG5hbWU6IG5ld0NhdGVnb3J5Lm5hbWUsXG4gICAgICBjb2RlOiBuZXdDYXRlZ29yeS5jb2RlLFxuICAgICAgaXNDdXN0b206IG5ld0NhdGVnb3J5LmlzQ3VzdG9tLFxuICAgICAgYWxsb3dSZWNvcmRzOiBuZXdDYXRlZ29yeS5hbGxvd1JlY29yZHMsXG4gICAgICBhbGxvd0N1c3RvbUNhdGVnb3JpZXM6IG5ld0NhdGVnb3J5LmFsbG93Q3VzdG9tQ2F0ZWdvcmllcyxcbiAgICB9O1xuICAgIGNvbnN0IHdyYXBwZWRDb250ZW50ID0gYXdhaXQgdGhpcy5rZXlNZXRhU2VydmljZS53cmFwQ29udGVudChcbiAgICAgIHNlY3VyZUNvbnRlbnQsXG4gICAgICBuZXdDYXRlZ29yeS5jYXRlZ29yeUlkc1xuICAgICk7XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPGFueT4oe1xuICAgICAgbXV0YXRpb246IENyZWF0ZUNhdGVnb3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcGxhaW5NZXRhOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZGlyZWN0b3J5VHlwZTogRGlyZWN0b3J5VHlwZS5DYXRlZ29yeSxcbiAgICAgICAgICBpc0hpZGRlbjogZmFsc2UsXG4gICAgICAgIH0pLFxuICAgICAgICBjaXBoZXJNZXRhOiB3cmFwcGVkQ29udGVudC5jaXBoZXJNZXRhLFxuICAgICAgICBwYXJlbnREaXJlY3Rvcmllczogd3JhcHBlZENvbnRlbnQud3JhcHBlZEtleXMsXG4gICAgICAgIHBhcmVudFJvb3REaXJlY3Rvcnk6IHdyYXBwZWRDb250ZW50LnJvb3RLZXksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLm5ldy5jYXRlZ29yeS5pZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVDYXRlZ29yeShcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXG4gICAga2V5SWQ6IHN0cmluZyxcbiAgICB1cGRhdGVkQ2F0ZWdvcnk6IFVwZGF0ZWRDYXRlZ29yeVxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBzZWN1cmVDb250ZW50ID0ge1xuICAgICAgbmFtZTogdXBkYXRlZENhdGVnb3J5Lm5hbWUsXG4gICAgICBjb2RlOiB1cGRhdGVkQ2F0ZWdvcnkuY29kZSxcbiAgICAgIGlzQ3VzdG9tOiB1cGRhdGVkQ2F0ZWdvcnkuaXNDdXN0b20sXG4gICAgICBhbGxvd1JlY29yZHM6IHVwZGF0ZWRDYXRlZ29yeS5hbGxvd1JlY29yZHMsXG4gICAgICBhbGxvd0N1c3RvbUNhdGVnb3JpZXM6IHVwZGF0ZWRDYXRlZ29yeS5hbGxvd0N1c3RvbUNhdGVnb3JpZXMsXG4gICAgfTtcblxuICAgIGNvbnN0IGNpcGhlck1ldGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGtleUlkLFxuICAgICAgc2VjdXJlQ29udGVudFxuICAgICk7XG5cbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkOiBjYXRlZ29yeUlkLFxuICAgICAgICAgIGNpcGhlck1ldGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHNldENhdGVnb3J5VmlzaWJpbGl0eShcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXG4gICAgaGlkZTogYm9vbGVhblxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogVXBkYXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkOiBjYXRlZ29yeUlkLFxuICAgICAgICAgIHBsYWluTWV0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZGlyZWN0b3J5VHlwZTogRGlyZWN0b3J5VHlwZS5DYXRlZ29yeSxcbiAgICAgICAgICAgIGlzSGlkZGVuOiBoaWRlLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBkZWxldGVDYXRlZ29yeShjYXRlZ29yeUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczogeyBjYXRlZ29yeUlkIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXJjaGl2ZUNhdGVnb3J5KFxuICAgIGNhdGVnb3J5SWQ6IHN0cmluZyxcbiAgICByZWN1cnNpdmU6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuYXJjaGl2ZURpcmVjdG9yeShjYXRlZ29yeUlkLCByZWN1cnNpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHVuYXJjaGl2ZUNhdGVnb3J5KFxuICAgIGNhdGVnb3J5SWQ6IHN0cmluZyxcbiAgICByZWN1cnNpdmU6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMudW5hcmNoaXZlRGlyZWN0b3J5KGNhdGVnb3J5SWQsIHJlY3Vyc2l2ZSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYXJjaGl2ZURpcmVjdG9yeShcbiAgICBkaXJlY3RvcnlJZDogc3RyaW5nLFxuICAgIHJlY3Vyc2l2ZTogYm9vbGVhblxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XG4gICAgICBtdXRhdGlvbjogQXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZGlyZWN0b3J5SWQsXG4gICAgICAgICAgcmVjdXJzaXZlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1bmFyY2hpdmVEaXJlY3RvcnkoXG4gICAgZGlyZWN0b3J5SWQ6IHN0cmluZyxcbiAgICByZWN1cnNpdmU6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IFVuYXJjaGl2ZURpcmVjdG9yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgZGlyZWN0b3J5SWQsXG4gICAgICAgICAgcmVjdXJzaXZlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtYXBWYXVsdChub2RlOiB7XG4gICAgaWQ7XG4gICAga2V5SWQ7XG4gICAgcGxhaW5NZXRhO1xuICAgIGNpcGhlck1ldGE7XG4gIH0pOiBQcm9taXNlPFZhdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbmFtZSB9ID0gKGF3YWl0IHRoaXMua2V5TWV0YVNlcnZpY2UuZGVjcnlwdE1ldGEobm9kZSkpIHx8IHt9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgIGtleUlkOiBub2RlLmtleUlkLFxuICAgICAgICBuYW1lLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZGVjcnlwdCBWYXVsdC4nLCBlLCBub2RlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtYXBQYXJlbnRDYXRlZ29yaWVzKGNhdGVnb3J5OiB7XG4gICAgcGFyZW50Q2F0ZWdvcmllczogYW55O1xuICB9KTogUHJvbWlzZTxDYXRlZ29yeVtdPiB7XG4gICAgaWYgKFxuICAgICAgIWNhdGVnb3J5LnBhcmVudENhdGVnb3JpZXMgfHxcbiAgICAgICFjYXRlZ29yeS5wYXJlbnRDYXRlZ29yaWVzLmVkZ2VzIHx8XG4gICAgICAhY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcmllcy5lZGdlcy5sZW5ndGhcbiAgICApIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgY29uc3Qgbm9kZSA9IGNhdGVnb3J5LnBhcmVudENhdGVnb3JpZXMuZWRnZXNbMF0ubm9kZS5wYXJlbnREaXJlY3Rvcnk7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLi4uKGF3YWl0IHRoaXMubWFwUGFyZW50Q2F0ZWdvcmllcyhub2RlKSksXG4gICAgICBhd2FpdCB0aGlzLm1hcENhdGVnb3J5KG5vZGUpLFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWFwQ2F0ZWdvcnkobm9kZToge1xuICAgIGlkO1xuICAgIGtleUlkO1xuICAgIHBsYWluTWV0YTtcbiAgICBjaXBoZXJNZXRhO1xuICAgIGRlc2NlbmRhbnREaXJlY3RvcmllcztcbiAgICBhY2Nlc3NSb2xlczogYW55W107XG4gICAgYXJjaGl2ZWQ7XG4gIH0pOiBQcm9taXNlPENhdGVnb3J5PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgbmFtZSwgaXNDdXN0b20sIGFsbG93UmVjb3JkcywgYWxsb3dDdXN0b21DYXRlZ29yaWVzLCBjb2RlIH0gPVxuICAgICAgICAoYXdhaXQgdGhpcy5rZXlNZXRhU2VydmljZS5kZWNyeXB0TWV0YShub2RlKSkgfHwge307XG4gICAgICBjb25zdCB7IGlzSGlkZGVuIH0gPSAobm9kZS5wbGFpbk1ldGEgJiYgSlNPTi5wYXJzZShub2RlLnBsYWluTWV0YSkpIHx8IHt9O1xuXG4gICAgICBjb25zdCBpc093bmVyID1cbiAgICAgICAgbm9kZS5hY2Nlc3NSb2xlcyAmJlxuICAgICAgICBub2RlLmFjY2Vzc1JvbGVzLnNvbWUoKHgpID0+IHgucm9sZSA9PT0gQWNjZXNzTGV2ZWwuT3duZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAga2V5SWQ6IG5vZGUua2V5SWQsXG4gICAgICAgIGNvZGUsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIGlzSGlkZGVuOiAhIWlzSGlkZGVuLFxuICAgICAgICBpc0N1c3RvbTogISFpc0N1c3RvbSxcbiAgICAgICAgaXNBcmNoaXZlZDogISFub2RlLmFyY2hpdmVkLFxuICAgICAgICBhbGxvd1JlY29yZHM6ICEhYWxsb3dSZWNvcmRzLFxuICAgICAgICBhbGxvd0N1c3RvbUNhdGVnb3JpZXM6ICEhYWxsb3dDdXN0b21DYXRlZ29yaWVzLFxuICAgICAgICBpc0VtcHR5OiBub2RlLmRlc2NlbmRhbnREaXJlY3Rvcmllc1xuICAgICAgICAgID8gbm9kZS5kZXNjZW5kYW50RGlyZWN0b3JpZXMucmVjb3Jkc0NvdW50ID09PSAwXG4gICAgICAgICAgOiBudWxsLFxuICAgICAgICBhbGxSZWNvcmRzQ291bnQ6IG5vZGUuZGVzY2VuZGFudERpcmVjdG9yaWVzPy5yZWNvcmRzQ291bnQsIC8vIE5lZWQgdGhpcyBmb3IgdGVzdGluZy5cbiAgICAgICAgbXlBY2Nlc3NMZXZlbDogaXNPd25lciA/IEFjY2Vzc0xldmVsLk93bmVyIDogbm9kZS5hY2Nlc3NSb2xlc1swXS5yb2xlLFxuICAgICAgICBzaGFyZWRBY2Nlc3M6IGlzT3duZXJcbiAgICAgICAgICA/IG5vZGUuYWNjZXNzUm9sZXNcbiAgICAgICAgICAgICAgLmZpbHRlcigoeCkgPT4geC5yb2xlICE9PSBBY2Nlc3NMZXZlbC5Pd25lcilcbiAgICAgICAgICAgICAgLm1hcCgoeCkgPT4gKHtcbiAgICAgICAgICAgICAgICB0cnVzdGVkUGFydHlJZDogeC50cnVzdGVkUGFydHkgJiYgeC50cnVzdGVkUGFydHkuaWQsXG4gICAgICAgICAgICAgICAgYWNjZXNzTGV2ZWw6IHgucm9sZSxcbiAgICAgICAgICAgICAgICBpc0luaGVyaXRlZDogeC5tZXRob2QgPT09ICdpbmhlcml0ZWQnLFxuICAgICAgICAgICAgICAgIGluaGVyaXRlZEZyb206IHguaW5oZXJpdGVkRnJvbSAmJiB4LmluaGVyaXRlZEZyb20uaWQsXG4gICAgICAgICAgICAgIH0pKVxuICAgICAgICAgIDogW10sXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBkZWNyeXB0IENhdGVnb3J5LicsIGUsIG5vZGUpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIG1hcFJlY29yZChub2RlOiB7XG4gICAgaWQ7XG4gICAga2V5SWQ7XG4gICAgcGxhaW5NZXRhO1xuICAgIGNpcGhlck1ldGE7XG4gICAgY3JlYXRlZDtcbiAgICBtb2RpZmllZDtcbiAgICBjb250ZW50O1xuICAgIGFjY2Vzc1JvbGVzOiBhbnlbXTtcbiAgICBhcmNoaXZlZDtcbiAgfSk6IFByb21pc2U8VmF1bHRSZWNvcmQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY29udGVudHMgPSBub2RlLmNvbnRlbnQuZWRnZXNbMF0ubm9kZS5jaGlsZEZpbGU7XG4gICAgICBjb25zdCB7IG5hbWUsIHJlY29yZFR5cGUgfSA9XG4gICAgICAgIChhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLmRlY3J5cHRNZXRhKFxuICAgICAgICAgIGNvbnRlbnRzLmN1cnJlbnRWZXJzaW9uLnN0YXRlXG4gICAgICAgICkpIHx8IHt9O1xuXG4gICAgICBjb25zdCBpc093bmVyID1cbiAgICAgICAgbm9kZS5hY2Nlc3NSb2xlcyAmJlxuICAgICAgICBub2RlLmFjY2Vzc1JvbGVzLnNvbWUoKHgpID0+IHgucm9sZSA9PT0gQWNjZXNzTGV2ZWwuT3duZXIpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogbm9kZS5pZCxcbiAgICAgICAga2V5SWQ6IG5vZGUua2V5SWQsXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHJlY29yZFR5cGUsXG4gICAgICAgIGlzQXJjaGl2ZWQ6ICEhbm9kZS5hcmNoaXZlZCxcbiAgICAgICAgY3JlYXRlZE9uOiBub2RlLmNyZWF0ZWQsXG4gICAgICAgIGxhc3RNb2RpZmllZDpcbiAgICAgICAgICBuZXcgRGF0ZShub2RlLm1vZGlmaWVkKSA+XG4gICAgICAgICAgbmV3IERhdGUoY29udGVudHMuY3VycmVudFZlcnNpb24uc3RhdGUubW9kaWZpZWQpXG4gICAgICAgICAgICA/IG5vZGUubW9kaWZpZWRcbiAgICAgICAgICAgIDogY29udGVudHMuY3VycmVudFZlcnNpb24uc3RhdGUubW9kaWZpZWQsXG4gICAgICAgIG15QWNjZXNzTGV2ZWw6IGlzT3duZXIgPyBBY2Nlc3NMZXZlbC5Pd25lciA6IG5vZGUuYWNjZXNzUm9sZXNbMF0ucm9sZSxcbiAgICAgICAgc2hhcmVkQWNjZXNzOiBpc093bmVyXG4gICAgICAgICAgPyBub2RlLmFjY2Vzc1JvbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgucm9sZSAhPT0gQWNjZXNzTGV2ZWwuT3duZXIpXG4gICAgICAgICAgICAgIC5tYXAoKHgpID0+ICh7XG4gICAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHgudHJ1c3RlZFBhcnR5ICYmIHgudHJ1c3RlZFBhcnR5LmlkLFxuICAgICAgICAgICAgICAgIGFjY2Vzc0xldmVsOiB4LnJvbGUsXG4gICAgICAgICAgICAgICAgaXNJbmhlcml0ZWQ6IHgubWV0aG9kID09PSAnaW5oZXJpdGVkJyxcbiAgICAgICAgICAgICAgICBpbmhlcml0ZWRGcm9tOiB4LmluaGVyaXRlZEZyb20gJiYgeC5pbmhlcml0ZWRGcm9tLmlkLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICA6IFtdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZGVjcnlwdCBSZWNvcmQuJywgZSk7XG4gICAgICByZXR1cm4gbnVsbCBhcyBWYXVsdFJlY29yZDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY2F0ZWdvcnkvY2F0ZWdvcnkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRTNELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHNCQUFzQixFQUN0QixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQiwwQkFBMEIsRUFFMUIsOEJBQThCLEVBRTlCLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsMEJBQTBCLEVBQzFCLHdCQUF3QixFQUN4QixjQUFjLEdBQ2YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsV0FBVyxHQU9aLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUszRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixZQUNVLFFBQXlCLEVBQ3pCLGNBQThCLEVBQzlCLFFBQXlCO1FBRnpCLGFBQVEsR0FBUixRQUFRLENBQWlCO1FBQ3pCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixhQUFRLEdBQVIsUUFBUSxDQUFpQjtJQUNoQyxDQUFDO0lBRVMsbUJBQW1CLENBQzlCLFFBQStCLElB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QUNuQixDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVc7NkJBQ2IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxLQUFLLENBQUM7NkJBQzNDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzs0QkFDWCxjQUFjLEVBQUUsQ0FBQyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUU7NEJBQ25ELFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSTs0QkFDbkIsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLEtBQUssV0FBVzs0QkFDckMsYUFBYSxFQUFFLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxFQUFFO3lCQUNyRCxDQUFDLENBQUM7d0JBQ1AsQ0FBQyxDQUFDLEVBQUU7aUJBQ1AsQ0FBQzthQUNIO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQywyQkFBMkIsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDOUMsT0FBTyxJQUFtQixDQUFDO2FBQzVCO1FBQ0gsQ0FBQztLQUFBOzs7O1lBMWNGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBdENRLGVBQWU7WUFDZixjQUFjO1lBaUNkLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMckFwb2xsb1NlcnZpY2UgfSBmcm9tICcuLi9hcGkvbHItYXBvbGxvLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBSZWNvcmRDb250ZW50RmlsdGVyIH0gZnJvbSAnLi4vcmVjb3JkL3JlY29yZC5ncWwnO1xuaW1wb3J0IHsgSGFzRWRnZXMsIEhhc0tleUdyYXBoRWRnZXMgfSBmcm9tICcuLi9fY29tbW9uL3R5cGVzJztcbmltcG9ydCB7XG4gIEdldFJvb3REaXJlY3RvcnlJZHNRdWVyeSxcbiAgRGVmYXVsdFZhdWx0RmlsdGVyLFxuICBDYXRlZ29yeUZpbHRlcixcbiAgQ3JlYXRlVmF1bHRNdXRhdGlvbixcbiAgQ3JlYXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgRGVsZXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgRGlyZWN0b3J5VHlwZSxcbiAgR2V0Q2F0ZWdvcmllc1F1ZXJ5LFxuICBHZXRDYXRlZ29yeVF1ZXJ5LFxuICBHZXRNeVNoYXJlZENhdGVnb3JpZXNRdWVyeSxcbiAgR2V0TXlTaGFyZWRDYXRlZ29yaWVzUXVlcnlUeXBlLFxuICBHZXRUcnVzdGVkUGFydHlDYXRlZ29yaWVzUXVlcnksXG4gIEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeVR5cGUsXG4gIFJlY29yZEZpbHRlcixcbiAgVXBkYXRlQ2F0ZWdvcnlNdXRhdGlvbixcbiAgVW5hcmNoaXZlRGlyZWN0b3J5TXV0YXRpb24sXG4gIEFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgR2V0VmF1bHRzUXVlcnksXG59IGZyb20gJy4vY2F0ZWdvcnkuZ3FsJztcbmltcG9ydCB7XG4gIEFjY2Vzc0xldmVsLFxuICBDYXRlZ29yeSxcbiAgTmV3Q2F0ZWdvcnksXG4gIFVwZGF0ZWRDYXRlZ29yeSxcbiAgVmF1bHRDYXRlZ29yeSxcbiAgVmF1bHRSZWNvcmQsXG4gIFZhdWx0LFxufSBmcm9tICcuL2NhdGVnb3J5LnR5cGVzJztcbmltcG9ydCB7IExyQmFkU3RhdGVFeGNlcHRpb24gfSBmcm9tICcuLi9fY29tbW9uL2V4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgS2V5R3JhcGhTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS1ncmFwaC5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENhdGVnb3J5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcbiAgICBwcml2YXRlIGtleU1ldGFTZXJ2aWNlOiBLZXlNZXRhU2VydmljZSxcbiAgICBwcml2YXRlIGtleUdyYXBoOiBLZXlHcmFwaFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBhc3luYyBnZXRSb290RGlyZWN0b3J5SWRzKFxuICAgIGlucHV0OiB7IGFyY2hpdmVkOiBib29sZWFuIH0gPSBudWxsXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCB7IHJvb3REaXJlY3RvcmllcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcbiAgICAgIHF1ZXJ5OiBHZXRSb290RGlyZWN0b3J5SWRzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgYXJjaGl2ZWQ6IGlucHV0ICYmIGlucHV0LmFyY2hpdmVkLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gcm9vdERpcmVjdG9yaWVzLmVkZ2VzLm1hcCgoZWRnZSkgPT4gZWRnZS5ub2RlLmlkKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXREZWZhdWx0VmF1bHQoKTogUHJvbWlzZTxWYXVsdD4ge1xuICAgIGNvbnN0IHsgbGlzdCB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxIYXNLZXlHcmFwaEVkZ2VzPGFueT4+KHtcbiAgICAgIHF1ZXJ5OiBHZXRWYXVsdHNRdWVyeSxcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBwbGFpbk1ldGFGaWx0ZXI6IERlZmF1bHRWYXVsdEZpbHRlcixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCBkZWZhdWx0VmF1bHRzID0gYXdhaXQgdGhpcy5tYXBWYXVsdHMobGlzdCk7XG4gICAgaWYgKGRlZmF1bHRWYXVsdHMubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IExyQmFkU3RhdGVFeGNlcHRpb24oJ1RoZXJlIGFyZSBtb3JlIHRoYW4gb25lIGRlZmF1bHQgdmF1bHRzJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRWYXVsdHNbMF0gfHwgbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRDYXRlZ29yaWVzKFxuICAgIGlucHV0OiB7IGFyY2hpdmVkOiBib29sZWFuIH0gPSBudWxsXG4gICk6IFByb21pc2U8Q2F0ZWdvcnlbXT4ge1xuICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxIYXNLZXlHcmFwaEVkZ2VzPGFueT4+KHtcbiAgICAgIHF1ZXJ5OiBHZXRDYXRlZ29yaWVzUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgdmF1bHRGaWx0ZXI6IERlZmF1bHRWYXVsdEZpbHRlcixcbiAgICAgICAgY2F0ZWdvcnlGaWx0ZXI6IENhdGVnb3J5RmlsdGVyLFxuICAgICAgICByZWNvcmRGaWx0ZXI6IFJlY29yZEZpbHRlcixcbiAgICAgICAgYXJjaGl2ZWQ6IGlucHV0ICYmIGlucHV0LmFyY2hpdmVkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChyZXMudmF1bHRzLmVkZ2VzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBMckJhZFN0YXRlRXhjZXB0aW9uKCdUaGVyZSBpcyBtb3JlIHRoYW4gb25lIGRlZmF1bHQgdmF1bHQnKTtcbiAgICB9IGVsc2UgaWYgKHJlcy52YXVsdHMuZWRnZXMubGVuZ3RoIDwgMSkge1xuICAgICAgY29uc29sZS5lcnJvcignVGhlcmUgaXMgbm8gZGVmYXVsdCB2YXVsdC4nKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwQ2F0ZWdvcmllcyhcbiAgICAgICAgcmVzLnZhdWx0cy5lZGdlc1swXS5ub2RlLmNoaWxkRGlyZWN0b3J5TGlua3NcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXMoXG4gICAgdHJ1c3RlZFBhcnR5SWQ6IHN0cmluZ1xuICApOiBQcm9taXNlPHsgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXTsgcmVjb3Jkcz86IFZhdWx0UmVjb3JkW10gfT4ge1xuICAgIGNvbnN0IHsgdHAgfSA9XG4gICAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeVR5cGU+KHtcbiAgICAgICAgcXVlcnk6IEdldFRydXN0ZWRQYXJ0eUNhdGVnb3JpZXNRdWVyeSxcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgdHJ1c3RlZFBhcnR5SWQsXG4gICAgICAgICAgY2F0ZWdvcnlGaWx0ZXI6IENhdGVnb3J5RmlsdGVyLFxuICAgICAgICAgIHJlY29yZEZpbHRlcjogUmVjb3JkRmlsdGVyLFxuICAgICAgICAgIGNvbnRlbnRGaWx0ZXI6IFJlY29yZENvbnRlbnRGaWx0ZXIsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcmllczogYXdhaXQgdGhpcy5tYXBDYXRlZ29yaWVzKHRwLnNoYXJlZEl0ZW1zLmxpc3QpLFxuICAgICAgcmVjb3JkczogYXdhaXQgdGhpcy5tYXBSZWNvcmRzKHRwLnNoYXJlZEl0ZW1zLnJlY29yZHMpLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TXlTaGFyZWRDYXRlZ29yaWVzKFxuICAgIHRydXN0ZWRQYXJ0eUlkOiBzdHJpbmdcbiAgKTogUHJvbWlzZTx7IGNhdGVnb3JpZXM6IENhdGVnb3J5W107IHJlY29yZHM/OiBWYXVsdFJlY29yZFtdIH0+IHtcbiAgICBjb25zdCB7IHRwIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PEdldE15U2hhcmVkQ2F0ZWdvcmllc1F1ZXJ5VHlwZT4oe1xuICAgICAgcXVlcnk6IEdldE15U2hhcmVkQ2F0ZWdvcmllc1F1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHRydXN0ZWRQYXJ0eUlkLFxuICAgICAgICBjYXRlZ29yeUZpbHRlcjogQ2F0ZWdvcnlGaWx0ZXIsXG4gICAgICAgIHJlY29yZEZpbHRlcjogUmVjb3JkRmlsdGVyLFxuICAgICAgICBjb250ZW50RmlsdGVyOiBSZWNvcmRDb250ZW50RmlsdGVyLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcmllczogYXdhaXQgdGhpcy5tYXBDYXRlZ29yaWVzKHRwLm15SXRlbXMubGlzdCksXG4gICAgICByZWNvcmRzOiBhd2FpdCB0aGlzLm1hcFJlY29yZHModHAubXlJdGVtcy5yZWNvcmRzKSxcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGdldENhdGVnb3J5KGNhdGVnb3J5SWQ6IHN0cmluZyk6IFByb21pc2U8VmF1bHRDYXRlZ29yeT4ge1xuICAgIGNvbnN0IHsgY2F0ZWdvcnkgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XG4gICAgICBxdWVyeTogR2V0Q2F0ZWdvcnlRdWVyeSgpLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkOiBjYXRlZ29yeUlkLFxuICAgICAgICBjYXRlZ29yeUZpbHRlcjogQ2F0ZWdvcnlGaWx0ZXIsXG4gICAgICAgIHJlY29yZEZpbHRlcjogUmVjb3JkRmlsdGVyLFxuICAgICAgICBjb250ZW50RmlsdGVyOiBSZWNvcmRDb250ZW50RmlsdGVyLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBjYXRlZ29yeToge1xuICAgICAgICAuLi4oYXdhaXQgdGhpcy5tYXBDYXRlZ29yeShjYXRlZ29yeSkpLFxuICAgICAgICBwYXJlbnRzOiBhd2FpdCB0aGlzLm1hcFBhcmVudENhdGVnb3JpZXMoY2F0ZWdvcnkpLFxuICAgICAgfSxcbiAgICAgIHN1YkNhdGVnb3JpZXM6IGF3YWl0IHRoaXMubWFwQ2F0ZWdvcmllcyhjYXRlZ29yeS5zdWJDYXRlZ29yaWVzKSxcbiAgICAgIHJlY29yZHM6IGF3YWl0IHRoaXMubWFwUmVjb3JkcyhjYXRlZ29yeS5yZWNvcmRzKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtYXBWYXVsdHMobGlzdDogSGFzRWRnZXM8YW55Pik6IFByb21pc2U8VmF1bHRbXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbDxWYXVsdD4oXG4gICAgICBsaXN0LmVkZ2VzLm1hcCgoZWRnZSkgPT4gdGhpcy5tYXBWYXVsdChlZGdlLm5vZGUpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIG1hcENhdGVnb3JpZXMobGlzdDogSGFzRWRnZXM8YW55Pikge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbDxDYXRlZ29yeT4oXG4gICAgICAgIGxpc3QuZWRnZXNcbiAgICAgICAgICAubWFwKCh4KSA9PiB4Lm5vZGUpXG4gICAgICAgICAgLm1hcCgoeCkgPT4geC5jaGlsZERpcmVjdG9yeSB8fCB4KVxuICAgICAgICAgIC5tYXAoXG4gICAgICAgICAgICAobm9kZToge1xuICAgICAgICAgICAgICBpZDtcbiAgICAgICAgICAgICAga2V5SWQ7XG4gICAgICAgICAgICAgIHBsYWluTWV0YTtcbiAgICAgICAgICAgICAgY2lwaGVyTWV0YTtcbiAgICAgICAgICAgICAgZGVzY2VuZGFudERpcmVjdG9yaWVzO1xuICAgICAgICAgICAgICBhY2Nlc3NSb2xlcztcbiAgICAgICAgICAgICAgYXJjaGl2ZWQ7XG4gICAgICAgICAgICB9KSA9PiB0aGlzLm1hcENhdGVnb3J5KG5vZGUpXG4gICAgICAgICAgKVxuICAgICAgKVxuICAgIClcbiAgICAgIC5maWx0ZXIoKHgpID0+IHgpXG4gICAgICAuc29ydCgoeCwgeSkgPT4gKHgubmFtZSA9PT0geS5uYW1lID8gMCA6IHgubmFtZSA+IHkubmFtZSA/IDEgOiAtMSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBtYXBSZWNvcmRzKGxpc3Q6IEhhc0VkZ2VzPGFueT4pIHtcbiAgICByZXR1cm4gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8VmF1bHRSZWNvcmQ+KFxuICAgICAgICBsaXN0LmVkZ2VzXG4gICAgICAgICAgLm1hcCgoeCkgPT4geC5ub2RlKVxuICAgICAgICAgIC5tYXAoKHgpID0+IHguY2hpbGREaXJlY3RvcnkgfHwgeClcbiAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgKG5vZGU6IHtcbiAgICAgICAgICAgICAgaWQ7XG4gICAgICAgICAgICAgIGtleUlkO1xuICAgICAgICAgICAgICBwbGFpbk1ldGE7XG4gICAgICAgICAgICAgIGNpcGhlck1ldGE7XG4gICAgICAgICAgICAgIGNyZWF0ZWQ7XG4gICAgICAgICAgICAgIG1vZGlmaWVkO1xuICAgICAgICAgICAgICBjb250ZW50O1xuICAgICAgICAgICAgICBhY2Nlc3NSb2xlcztcbiAgICAgICAgICAgICAgYXJjaGl2ZWQ7XG4gICAgICAgICAgICB9KSA9PiB0aGlzLm1hcFJlY29yZChub2RlKVxuICAgICAgICAgIClcbiAgICAgIClcbiAgICApXG4gICAgICAuZmlsdGVyKCh4KSA9PiB4KVxuICAgICAgLnNvcnQoKHgsIHkpID0+ICh4Lm5hbWUgPT09IHkubmFtZSA/IDAgOiB4Lm5hbWUgPiB5Lm5hbWUgPyAxIDogLTEpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVEZWZhdWx0VmF1bHQoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBzZWN1cmVDb250ZW50ID0gJyc7XG4gICAgY29uc3Qgd3JhcHBlZENvbnRlbnQgPSBhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLndyYXBDb250ZW50KHNlY3VyZUNvbnRlbnQpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVWYXVsdE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHBsYWluTWV0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGRpcmVjdG9yeVR5cGU6IERpcmVjdG9yeVR5cGUuVmF1bHQsXG4gICAgICAgICAgZGVmYXVsdDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIGNpcGhlck1ldGE6IHdyYXBwZWRDb250ZW50LmNpcGhlck1ldGEsXG4gICAgICAgIHBhcmVudFJvb3REaXJlY3Rvcnk6IHdyYXBwZWRDb250ZW50LnJvb3RLZXksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHJlc3BvbnNlLm5ldy52YXVsdC5pZDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBjcmVhdGVDYXRlZ29yeShuZXdDYXRlZ29yeTogTmV3Q2F0ZWdvcnkpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGNvbnN0IHNlY3VyZUNvbnRlbnQgPSB7XG4gICAgICBuYW1lOiBuZXdDYXRlZ29yeS5uYW1lLFxuICAgICAgY29kZTogbmV3Q2F0ZWdvcnkuY29kZSxcbiAgICAgIGlzQ3VzdG9tOiBuZXdDYXRlZ29yeS5pc0N1c3RvbSxcbiAgICAgIGFsbG93UmVjb3JkczogbmV3Q2F0ZWdvcnkuYWxsb3dSZWNvcmRzLFxuICAgICAgYWxsb3dDdXN0b21DYXRlZ29yaWVzOiBuZXdDYXRlZ29yeS5hbGxvd0N1c3RvbUNhdGVnb3JpZXMsXG4gICAgfTtcbiAgICBjb25zdCB3cmFwcGVkQ29udGVudCA9IGF3YWl0IHRoaXMua2V5TWV0YVNlcnZpY2Uud3JhcENvbnRlbnQoXG4gICAgICBzZWN1cmVDb250ZW50LFxuICAgICAgbmV3Q2F0ZWdvcnkuY2F0ZWdvcnlJZHNcbiAgICApO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZTxhbnk+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDYXRlZ29yeU11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIHBsYWluTWV0YTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGRpcmVjdG9yeVR5cGU6IERpcmVjdG9yeVR5cGUuQ2F0ZWdvcnksXG4gICAgICAgICAgaXNIaWRkZW46IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgICAgY2lwaGVyTWV0YTogd3JhcHBlZENvbnRlbnQuY2lwaGVyTWV0YSxcbiAgICAgICAgcGFyZW50RGlyZWN0b3JpZXM6IHdyYXBwZWRDb250ZW50LndyYXBwZWRLZXlzLFxuICAgICAgICBwYXJlbnRSb290RGlyZWN0b3J5OiB3cmFwcGVkQ29udGVudC5yb290S2V5LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiByZXNwb25zZS5uZXcuY2F0ZWdvcnkuaWQ7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ2F0ZWdvcnkoXG4gICAgY2F0ZWdvcnlJZDogc3RyaW5nLFxuICAgIGtleUlkOiBzdHJpbmcsXG4gICAgdXBkYXRlZENhdGVnb3J5OiBVcGRhdGVkQ2F0ZWdvcnlcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgc2VjdXJlQ29udGVudCA9IHtcbiAgICAgIG5hbWU6IHVwZGF0ZWRDYXRlZ29yeS5uYW1lLFxuICAgICAgY29kZTogdXBkYXRlZENhdGVnb3J5LmNvZGUsXG4gICAgICBpc0N1c3RvbTogdXBkYXRlZENhdGVnb3J5LmlzQ3VzdG9tLFxuICAgICAgYWxsb3dSZWNvcmRzOiB1cGRhdGVkQ2F0ZWdvcnkuYWxsb3dSZWNvcmRzLFxuICAgICAgYWxsb3dDdXN0b21DYXRlZ29yaWVzOiB1cGRhdGVkQ2F0ZWdvcnkuYWxsb3dDdXN0b21DYXRlZ29yaWVzLFxuICAgIH07XG5cbiAgICBjb25zdCBjaXBoZXJNZXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBrZXlJZCxcbiAgICAgIHNlY3VyZUNvbnRlbnRcbiAgICApO1xuXG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNhdGVnb3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBkaXJlY3RvcnlJZDogY2F0ZWdvcnlJZCxcbiAgICAgICAgICBjaXBoZXJNZXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzZXRDYXRlZ29yeVZpc2liaWxpdHkoXG4gICAgY2F0ZWdvcnlJZDogc3RyaW5nLFxuICAgIGhpZGU6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNhdGVnb3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICBkaXJlY3RvcnlJZDogY2F0ZWdvcnlJZCxcbiAgICAgICAgICBwbGFpbk1ldGE6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGRpcmVjdG9yeVR5cGU6IERpcmVjdG9yeVR5cGUuQ2F0ZWdvcnksXG4gICAgICAgICAgICBpc0hpZGRlbjogaGlkZSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZGVsZXRlQ2F0ZWdvcnkoY2F0ZWdvcnlJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IERlbGV0ZUNhdGVnb3J5TXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHsgY2F0ZWdvcnlJZCB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFyY2hpdmVDYXRlZ29yeShcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXG4gICAgcmVjdXJzaXZlOiBib29sZWFuXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmFyY2hpdmVEaXJlY3RvcnkoY2F0ZWdvcnlJZCwgcmVjdXJzaXZlKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyB1bmFyY2hpdmVDYXRlZ29yeShcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXG4gICAgcmVjdXJzaXZlOiBib29sZWFuXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnVuYXJjaGl2ZURpcmVjdG9yeShjYXRlZ29yeUlkLCByZWN1cnNpdmUpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGFyY2hpdmVEaXJlY3RvcnkoXG4gICAgZGlyZWN0b3J5SWQ6IHN0cmluZyxcbiAgICByZWN1cnNpdmU6IGJvb2xlYW5cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGUoe1xuICAgICAgbXV0YXRpb246IEFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHJlY3Vyc2l2ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgdW5hcmNoaXZlRGlyZWN0b3J5KFxuICAgIGRpcmVjdG9yeUlkOiBzdHJpbmcsXG4gICAgcmVjdXJzaXZlOiBib29sZWFuXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcbiAgICAgIG11dGF0aW9uOiBVbmFyY2hpdmVEaXJlY3RvcnlNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGRpcmVjdG9yeUlkLFxuICAgICAgICAgIHJlY3Vyc2l2ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWFwVmF1bHQobm9kZToge1xuICAgIGlkO1xuICAgIGtleUlkO1xuICAgIHBsYWluTWV0YTtcbiAgICBjaXBoZXJNZXRhO1xuICB9KTogUHJvbWlzZTxWYXVsdD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG5hbWUgfSA9IChhd2FpdCB0aGlzLmtleU1ldGFTZXJ2aWNlLmRlY3J5cHRNZXRhKG5vZGUpKSB8fCB7fTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBub2RlLmlkLFxuICAgICAgICBrZXlJZDogbm9kZS5rZXlJZCxcbiAgICAgICAgbmFtZSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgVmF1bHQuJywgZSwgbm9kZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgbWFwUGFyZW50Q2F0ZWdvcmllcyhjYXRlZ29yeToge1xuICAgIHBhcmVudENhdGVnb3JpZXM6IGFueTtcbiAgfSk6IFByb21pc2U8Q2F0ZWdvcnlbXT4ge1xuICAgIGlmIChcbiAgICAgICFjYXRlZ29yeS5wYXJlbnRDYXRlZ29yaWVzIHx8XG4gICAgICAhY2F0ZWdvcnkucGFyZW50Q2F0ZWdvcmllcy5lZGdlcyB8fFxuICAgICAgIWNhdGVnb3J5LnBhcmVudENhdGVnb3JpZXMuZWRnZXMubGVuZ3RoXG4gICAgKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IG5vZGUgPSBjYXRlZ29yeS5wYXJlbnRDYXRlZ29yaWVzLmVkZ2VzWzBdLm5vZGUucGFyZW50RGlyZWN0b3J5O1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC4uLihhd2FpdCB0aGlzLm1hcFBhcmVudENhdGVnb3JpZXMobm9kZSkpLFxuICAgICAgYXdhaXQgdGhpcy5tYXBDYXRlZ29yeShub2RlKSxcbiAgICBdO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIG1hcENhdGVnb3J5KG5vZGU6IHtcbiAgICBpZDtcbiAgICBrZXlJZDtcbiAgICBwbGFpbk1ldGE7XG4gICAgY2lwaGVyTWV0YTtcbiAgICBkZXNjZW5kYW50RGlyZWN0b3JpZXM7XG4gICAgYWNjZXNzUm9sZXM6IGFueVtdO1xuICAgIGFyY2hpdmVkO1xuICB9KTogUHJvbWlzZTxDYXRlZ29yeT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IG5hbWUsIGlzQ3VzdG9tLCBhbGxvd1JlY29yZHMsIGFsbG93Q3VzdG9tQ2F0ZWdvcmllcywgY29kZSB9ID1cbiAgICAgICAgKGF3YWl0IHRoaXMua2V5TWV0YVNlcnZpY2UuZGVjcnlwdE1ldGEobm9kZSkpIHx8IHt9O1xuICAgICAgY29uc3QgeyBpc0hpZGRlbiB9ID0gKG5vZGUucGxhaW5NZXRhICYmIEpTT04ucGFyc2Uobm9kZS5wbGFpbk1ldGEpKSB8fCB7fTtcblxuICAgICAgY29uc3QgaXNPd25lciA9XG4gICAgICAgIG5vZGUuYWNjZXNzUm9sZXMgJiZcbiAgICAgICAgbm9kZS5hY2Nlc3NSb2xlcy5zb21lKCh4KSA9PiB4LnJvbGUgPT09IEFjY2Vzc0xldmVsLk93bmVyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgIGtleUlkOiBub2RlLmtleUlkLFxuICAgICAgICBjb2RlLFxuICAgICAgICBuYW1lLFxuICAgICAgICBpc0hpZGRlbjogISFpc0hpZGRlbixcbiAgICAgICAgaXNDdXN0b206ICEhaXNDdXN0b20sXG4gICAgICAgIGlzQXJjaGl2ZWQ6ICEhbm9kZS5hcmNoaXZlZCxcbiAgICAgICAgYWxsb3dSZWNvcmRzOiAhIWFsbG93UmVjb3JkcyxcbiAgICAgICAgYWxsb3dDdXN0b21DYXRlZ29yaWVzOiAhIWFsbG93Q3VzdG9tQ2F0ZWdvcmllcyxcbiAgICAgICAgaXNFbXB0eTogbm9kZS5kZXNjZW5kYW50RGlyZWN0b3JpZXNcbiAgICAgICAgICA/IG5vZGUuZGVzY2VuZGFudERpcmVjdG9yaWVzLnJlY29yZHNDb3VudCA9PT0gMFxuICAgICAgICAgIDogbnVsbCxcbiAgICAgICAgYWxsUmVjb3Jkc0NvdW50OiBub2RlLmRlc2NlbmRhbnREaXJlY3Rvcmllcz8ucmVjb3Jkc0NvdW50LCAvLyBOZWVkIHRoaXMgZm9yIHRlc3RpbmcuXG4gICAgICAgIG15QWNjZXNzTGV2ZWw6IGlzT3duZXIgPyBBY2Nlc3NMZXZlbC5Pd25lciA6IG5vZGUuYWNjZXNzUm9sZXNbMF0ucm9sZSxcbiAgICAgICAgc2hhcmVkQWNjZXNzOiBpc093bmVyXG4gICAgICAgICAgPyBub2RlLmFjY2Vzc1JvbGVzXG4gICAgICAgICAgICAgIC5maWx0ZXIoKHgpID0+IHgucm9sZSAhPT0gQWNjZXNzTGV2ZWwuT3duZXIpXG4gICAgICAgICAgICAgIC5tYXAoKHgpID0+ICh7XG4gICAgICAgICAgICAgICAgdHJ1c3RlZFBhcnR5SWQ6IHgudHJ1c3RlZFBhcnR5ICYmIHgudHJ1c3RlZFBhcnR5LmlkLFxuICAgICAgICAgICAgICAgIGFjY2Vzc0xldmVsOiB4LnJvbGUsXG4gICAgICAgICAgICAgICAgaXNJbmhlcml0ZWQ6IHgubWV0aG9kID09PSAnaW5oZXJpdGVkJyxcbiAgICAgICAgICAgICAgICBpbmhlcml0ZWRGcm9tOiB4LmluaGVyaXRlZEZyb20gJiYgeC5pbmhlcml0ZWRGcm9tLmlkLFxuICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICA6IFtdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZGVjcnlwdCBDYXRlZ29yeS4nLCBlLCBub2RlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBtYXBSZWNvcmQobm9kZToge1xuICAgIGlkO1xuICAgIGtleUlkO1xuICAgIHBsYWluTWV0YTtcbiAgICBjaXBoZXJNZXRhO1xuICAgIGNyZWF0ZWQ7XG4gICAgbW9kaWZpZWQ7XG4gICAgY29udGVudDtcbiAgICBhY2Nlc3NSb2xlczogYW55W107XG4gICAgYXJjaGl2ZWQ7XG4gIH0pOiBQcm9taXNlPFZhdWx0UmVjb3JkPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGNvbnRlbnRzID0gbm9kZS5jb250ZW50LmVkZ2VzWzBdLm5vZGUuY2hpbGRGaWxlO1xuICAgICAgY29uc3QgeyBuYW1lLCByZWNvcmRUeXBlIH0gPVxuICAgICAgICAoYXdhaXQgdGhpcy5rZXlNZXRhU2VydmljZS5kZWNyeXB0TWV0YShcbiAgICAgICAgICBjb250ZW50cy5jdXJyZW50VmVyc2lvbi5zdGF0ZVxuICAgICAgICApKSB8fCB7fTtcblxuICAgICAgY29uc3QgaXNPd25lciA9XG4gICAgICAgIG5vZGUuYWNjZXNzUm9sZXMgJiZcbiAgICAgICAgbm9kZS5hY2Nlc3NSb2xlcy5zb21lKCh4KSA9PiB4LnJvbGUgPT09IEFjY2Vzc0xldmVsLk93bmVyKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IG5vZGUuaWQsXG4gICAgICAgIGtleUlkOiBub2RlLmtleUlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICByZWNvcmRUeXBlLFxuICAgICAgICBpc0FyY2hpdmVkOiAhIW5vZGUuYXJjaGl2ZWQsXG4gICAgICAgIGNyZWF0ZWRPbjogbm9kZS5jcmVhdGVkLFxuICAgICAgICBsYXN0TW9kaWZpZWQ6XG4gICAgICAgICAgbmV3IERhdGUobm9kZS5tb2RpZmllZCkgPlxuICAgICAgICAgIG5ldyBEYXRlKGNvbnRlbnRzLmN1cnJlbnRWZXJzaW9uLnN0YXRlLm1vZGlmaWVkKVxuICAgICAgICAgICAgPyBub2RlLm1vZGlmaWVkXG4gICAgICAgICAgICA6IGNvbnRlbnRzLmN1cnJlbnRWZXJzaW9uLnN0YXRlLm1vZGlmaWVkLFxuICAgICAgICBteUFjY2Vzc0xldmVsOiBpc093bmVyID8gQWNjZXNzTGV2ZWwuT3duZXIgOiBub2RlLmFjY2Vzc1JvbGVzWzBdLnJvbGUsXG4gICAgICAgIHNoYXJlZEFjY2VzczogaXNPd25lclxuICAgICAgICAgID8gbm9kZS5hY2Nlc3NSb2xlc1xuICAgICAgICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnJvbGUgIT09IEFjY2Vzc0xldmVsLk93bmVyKVxuICAgICAgICAgICAgICAubWFwKCh4KSA9PiAoe1xuICAgICAgICAgICAgICAgIHRydXN0ZWRQYXJ0eUlkOiB4LnRydXN0ZWRQYXJ0eSAmJiB4LnRydXN0ZWRQYXJ0eS5pZCxcbiAgICAgICAgICAgICAgICBhY2Nlc3NMZXZlbDogeC5yb2xlLFxuICAgICAgICAgICAgICAgIGlzSW5oZXJpdGVkOiB4Lm1ldGhvZCA9PT0gJ2luaGVyaXRlZCcsXG4gICAgICAgICAgICAgICAgaW5oZXJpdGVkRnJvbTogeC5pbmhlcml0ZWRGcm9tICYmIHguaW5oZXJpdGVkRnJvbS5pZCxcbiAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgOiBbXSxcbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgUmVjb3JkLicsIGUpO1xuICAgICAgcmV0dXJuIG51bGwgYXMgVmF1bHRSZWNvcmQ7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { KeyGraphField } from '../_common/queries.gql';
|
|
2
|
+
import gql from 'graphql-tag';
|
|
3
|
+
export const ContactCardFields = `
|
|
4
|
+
id
|
|
5
|
+
publicData
|
|
6
|
+
publicSearchable
|
|
7
|
+
cipherData
|
|
8
|
+
key {
|
|
9
|
+
id
|
|
10
|
+
}
|
|
11
|
+
`;
|
|
12
|
+
export const ContactCardQuery = gql `
|
|
13
|
+
query ContactCardQuery(
|
|
14
|
+
$id: LrRelayIdInput!
|
|
15
|
+
) {
|
|
16
|
+
contactCard (
|
|
17
|
+
id: $id
|
|
18
|
+
) {
|
|
19
|
+
${ContactCardFields}
|
|
20
|
+
}
|
|
21
|
+
${KeyGraphField}
|
|
22
|
+
}`;
|
|
23
|
+
export const SearchContactCardQuery = gql `
|
|
24
|
+
query SearchContactCardQuery(
|
|
25
|
+
$publicSearchable: LrJSONFilter!
|
|
26
|
+
) {
|
|
27
|
+
searchContactCards(
|
|
28
|
+
publicSearchable: $publicSearchable
|
|
29
|
+
orderBy: "created"
|
|
30
|
+
) {
|
|
31
|
+
edges {
|
|
32
|
+
node {
|
|
33
|
+
${ContactCardFields}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
${KeyGraphField}
|
|
38
|
+
}`;
|
|
39
|
+
export const ContactCardListQuery = gql `
|
|
40
|
+
query ContactCardListQuery {
|
|
41
|
+
contactCards(
|
|
42
|
+
orderBy: "created"
|
|
43
|
+
) {
|
|
44
|
+
edges {
|
|
45
|
+
node {
|
|
46
|
+
${ContactCardFields}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
${KeyGraphField}
|
|
51
|
+
}`;
|
|
52
|
+
export const CreateContactCardMutation = gql `
|
|
53
|
+
mutation CreateContactCardMutation(
|
|
54
|
+
$input: CreateContactCardInput!
|
|
55
|
+
) {
|
|
56
|
+
createContactCard(input: $input) {
|
|
57
|
+
contactCard {
|
|
58
|
+
${ContactCardFields}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}`;
|
|
62
|
+
export const UpdateContactCardMutation = gql `
|
|
63
|
+
mutation UpdateContactCardMutation(
|
|
64
|
+
$input: UpdateContactCardInput!
|
|
65
|
+
) {
|
|
66
|
+
updateContactCard(input: $input) {
|
|
67
|
+
contactCard {
|
|
68
|
+
${ContactCardFields}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}`;
|
|
72
|
+
export const DeleteContactCardMutation = gql `
|
|
73
|
+
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
74
|
+
deleteContactCard(input: $input) {
|
|
75
|
+
id
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
`;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLmdxbC5qcyIsInNvdXJjZVJvb3QiOiIvb3B0L2F0bGFzc2lhbi9waXBlbGluZXMvYWdlbnQvYnVpbGQvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5ncWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sR0FBRyxNQUFNLGFBQWEsQ0FBQztBQUU5QixNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRzs7Ozs7Ozs7Q0FRaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLEdBQUcsQ0FBQTs7Ozs7OztJQU8vQixpQkFBaUI7O0VBRW5CLGFBQWE7RUFDYixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7O1VBVS9CLGlCQUFpQjs7OztJQUl2QixhQUFhO0VBQ2YsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTs7Ozs7OztVQU83QixpQkFBaUI7Ozs7SUFJdkIsYUFBYTtFQUNmLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxHQUFHLENBQUE7Ozs7OztRQU1wQyxpQkFBaUI7OztFQUd2QixDQUFDO0FBRUgsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsR0FBRyxDQUFBOzs7Ozs7UUFNcEMsaUJBQWlCOzs7RUFHdkIsQ0FBQztBQUVILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLEdBQUcsQ0FBQTs7Ozs7O0NBTTNDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBLZXlHcmFwaEZpZWxkIH0gZnJvbSAnLi4vX2NvbW1vbi9xdWVyaWVzLmdxbCc7XG5pbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcblxuZXhwb3J0IGNvbnN0IENvbnRhY3RDYXJkRmllbGRzID0gYFxuaWRcbnB1YmxpY0RhdGFcbnB1YmxpY1NlYXJjaGFibGVcbmNpcGhlckRhdGFcbmtleSB7XG4gIGlkXG59XG5gO1xuXG5leHBvcnQgY29uc3QgQ29udGFjdENhcmRRdWVyeSA9IGdxbGBcbnF1ZXJ5IENvbnRhY3RDYXJkUXVlcnkoXG4kaWQ6IExyUmVsYXlJZElucHV0IVxuKSB7XG5jb250YWN0Q2FyZCAoXG4gIGlkOiAkaWRcbikge1xuICAke0NvbnRhY3RDYXJkRmllbGRzfVxufVxuJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBTZWFyY2hDb250YWN0Q2FyZFF1ZXJ5ID0gZ3FsYFxucXVlcnkgU2VhcmNoQ29udGFjdENhcmRRdWVyeShcbiAgJHB1YmxpY1NlYXJjaGFibGU6IExySlNPTkZpbHRlciFcbikge1xuICBzZWFyY2hDb250YWN0Q2FyZHMoXG4gICAgcHVibGljU2VhcmNoYWJsZTogJHB1YmxpY1NlYXJjaGFibGVcbiAgICBvcmRlckJ5OiBcImNyZWF0ZWRcIlxuICApIHtcbiAgICBlZGdlcyB7XG4gICAgICBub2RlIHtcbiAgICAgICAgJHtDb250YWN0Q2FyZEZpZWxkc31cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgJHtLZXlHcmFwaEZpZWxkfVxufWA7XG5cbmV4cG9ydCBjb25zdCBDb250YWN0Q2FyZExpc3RRdWVyeSA9IGdxbGBcbnF1ZXJ5IENvbnRhY3RDYXJkTGlzdFF1ZXJ5IHtcbiAgY29udGFjdENhcmRzKFxuICAgIG9yZGVyQnk6IFwiY3JlYXRlZFwiXG4gICkge1xuICAgIGVkZ2VzIHtcbiAgICAgIG5vZGUge1xuICAgICAgICAke0NvbnRhY3RDYXJkRmllbGRzfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRmllbGR9XG59YDtcblxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG5tdXRhdGlvbiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uKFxuICAkaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXQhXG4pIHtcbiAgY3JlYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG5tdXRhdGlvbiBVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uKFxuICAkaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQhXG4pIHtcbiAgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6ICRpbnB1dCkge1xuICAgIGNvbnRhY3RDYXJkIHtcbiAgICAgICR7Q29udGFjdENhcmRGaWVsZHN9XG4gICAgfVxuICB9XG59YDtcblxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxgXG4gIG11dGF0aW9uIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBEZWxldGVDb250YWN0Q2FyZElucHV0ISkge1xuICAgIGRlbGV0ZUNvbnRhY3RDYXJkKGlucHV0OiAkaW5wdXQpIHtcbiAgICAgIGlkXG4gICAgfVxuICB9XG5gO1xuIl19
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { LrApolloService } from '../api/lr-apollo.service';
|
|
4
|
+
import { EncryptionService } from '../encryption/encryption.service';
|
|
5
|
+
import { KeyFactoryService } from '../key/key-factory.service';
|
|
6
|
+
import { KeyGraphService } from '../key/key-graph.service';
|
|
7
|
+
import { KeyMetaService } from '../key/key-meta.service';
|
|
8
|
+
import { KeyService } from '../key/key.service';
|
|
9
|
+
import { ContactCardListQuery, ContactCardQuery, CreateContactCardMutation, DeleteContactCardMutation, SearchContactCardQuery, UpdateContactCardMutation, } from './contact-card.gql';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "../key/key-factory.service";
|
|
12
|
+
import * as i2 from "../key/key.service";
|
|
13
|
+
import * as i3 from "../api/lr-apollo.service";
|
|
14
|
+
import * as i4 from "../key/key-graph.service";
|
|
15
|
+
import * as i5 from "../encryption/encryption.service";
|
|
16
|
+
import * as i6 from "../key/key-meta.service";
|
|
17
|
+
export class ContactCard {
|
|
18
|
+
}
|
|
19
|
+
export class ContactCardService {
|
|
20
|
+
constructor(keyFactory, keyService, lrApollo, keyGraph, encryptionService, keyMetaService) {
|
|
21
|
+
this.keyFactory = keyFactory;
|
|
22
|
+
this.keyService = keyService;
|
|
23
|
+
this.lrApollo = lrApollo;
|
|
24
|
+
this.keyGraph = keyGraph;
|
|
25
|
+
this.encryptionService = encryptionService;
|
|
26
|
+
this.keyMetaService = keyMetaService;
|
|
27
|
+
}
|
|
28
|
+
decryptContactCard(cc) {
|
|
29
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
const ret = Object.assign(Object.assign({}, cc), { publicDataJson: JSON.parse(cc.publicData), publicSearchableJson: JSON.parse(cc.publicSearchable) });
|
|
31
|
+
if (cc.key) {
|
|
32
|
+
const key = yield this.keyGraph.getJwkKey(cc.key.id);
|
|
33
|
+
// TODO: verify signature
|
|
34
|
+
ret.plainCipherDataJson = yield this.encryptionService.decrypt(key, cc.cipherData);
|
|
35
|
+
}
|
|
36
|
+
return ret;
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
decryptContactCardEdges(hasEdges) {
|
|
40
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
41
|
+
return Promise.all(hasEdges.edges.map((edge) => __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
const cc = edge.node;
|
|
43
|
+
return yield this.decryptContactCard(cc);
|
|
44
|
+
})));
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
// { "filter": [{ "contains": { "a": true } }] }
|
|
48
|
+
searchContactCard(publicSearchable) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
const data = yield this.lrApollo.query({
|
|
51
|
+
query: SearchContactCardQuery,
|
|
52
|
+
variables: {
|
|
53
|
+
publicSearchable: JSON.stringify(publicSearchable),
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
return yield this.decryptContactCardEdges(data.searchContactCards);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
getContactCardList() {
|
|
60
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
+
const data = yield this.lrApollo.query({
|
|
62
|
+
query: ContactCardListQuery,
|
|
63
|
+
});
|
|
64
|
+
return yield this.decryptContactCardEdges(data.contactCards);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
getContactCard(id) {
|
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
69
|
+
const data = yield this.lrApollo.query({
|
|
70
|
+
query: ContactCardQuery,
|
|
71
|
+
variables: {
|
|
72
|
+
id,
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
return yield this.decryptContactCard(data.contactCard);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
prepareContactCardInput(input) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
const sigPxk = yield this.keyService.getCurrentSigPxk();
|
|
81
|
+
const publicDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicDataJson));
|
|
82
|
+
const publicSearchableSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.publicSearchableJson));
|
|
83
|
+
const plainDataSig = JSON.stringify(yield this.encryptionService.sign(sigPxk.jwk, input.plainDataJson));
|
|
84
|
+
return {
|
|
85
|
+
sigPxkId: sigPxk.id,
|
|
86
|
+
publicDataSig,
|
|
87
|
+
publicSearchableSig,
|
|
88
|
+
plainDataSig,
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
createContactCard(input) {
|
|
93
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
94
|
+
// Get encryption key
|
|
95
|
+
const rootKey = yield this.keyService.getCurrentRootKey();
|
|
96
|
+
const key = yield this.keyFactory.createKey();
|
|
97
|
+
const wrappedKey = yield this.keyGraph.encryptToString(rootKey.jwk, key.toJSON(true));
|
|
98
|
+
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
99
|
+
const params = yield this.prepareContactCardInput(input);
|
|
100
|
+
const data = yield this.lrApollo.mutate({
|
|
101
|
+
mutation: CreateContactCardMutation,
|
|
102
|
+
variables: {
|
|
103
|
+
input: Object.assign(Object.assign({}, params), { wrappingKeyId: rootKey.id, wrappedKey,
|
|
104
|
+
cipherData }),
|
|
105
|
+
},
|
|
106
|
+
});
|
|
107
|
+
return data.createContactCard.contactCard;
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
updateContactCard(input) {
|
|
111
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
112
|
+
// Get encryption key
|
|
113
|
+
const cc = yield this.getContactCard(input.id);
|
|
114
|
+
const key = yield this.keyGraph.getJwkKey(cc.key.id);
|
|
115
|
+
const cipherData = yield this.keyGraph.encryptToString(key, input.plainCipherDataJson);
|
|
116
|
+
const params = yield this.prepareContactCardInput(input);
|
|
117
|
+
const data = yield this.lrApollo.mutate({
|
|
118
|
+
mutation: UpdateContactCardMutation,
|
|
119
|
+
variables: {
|
|
120
|
+
input: Object.assign(Object.assign({}, params), { id: input.id, cipherData }),
|
|
121
|
+
},
|
|
122
|
+
});
|
|
123
|
+
return data.updateContactCard.contactCard;
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
deleteContactCard(id) {
|
|
127
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
const data = yield this.lrApollo.mutate({
|
|
129
|
+
mutation: DeleteContactCardMutation,
|
|
130
|
+
variables: {
|
|
131
|
+
input: {
|
|
132
|
+
id,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
});
|
|
136
|
+
return data.deleteContactCard.id;
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
ContactCardService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ContactCardService_Factory() { return new ContactCardService(i0.ɵɵinject(i1.KeyFactoryService), i0.ɵɵinject(i2.KeyService), i0.ɵɵinject(i3.LrApolloService), i0.ɵɵinject(i4.KeyGraphService), i0.ɵɵinject(i5.EncryptionService), i0.ɵɵinject(i6.KeyMetaService)); }, token: ContactCardService, providedIn: "root" });
|
|
141
|
+
ContactCardService.decorators = [
|
|
142
|
+
{ type: Injectable, args: [{
|
|
143
|
+
providedIn: 'root',
|
|
144
|
+
},] }
|
|
145
|
+
];
|
|
146
|
+
ContactCardService.ctorParameters = () => [
|
|
147
|
+
{ type: KeyFactoryService },
|
|
148
|
+
{ type: KeyService },
|
|
149
|
+
{ type: LrApolloService },
|
|
150
|
+
{ type: KeyGraphService },
|
|
151
|
+
{ type: EncryptionService },
|
|
152
|
+
{ type: KeyMetaService }
|
|
153
|
+
];
|
|
154
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFJaEQsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIseUJBQXlCLEVBQ3pCLHlCQUF5QixFQUN6QixzQkFBc0IsRUFDdEIseUJBQXlCLEdBQzFCLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7O0FBYzVCLE1BQU0sT0FBTyxXQUFXO0NBZ0J2QjtBQWdCRCxNQUFNLE9BQU8sa0JBQWtCO0lBQzdCLFlBQ1UsVUFBNkIsRUFDN0IsVUFBc0IsRUFDdEIsUUFBeUIsRUFDekIsUUFBeUIsRUFDekIsaUJBQW9DLEVBQ3BDLGNBQThCO1FBTDlCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBQzdCLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7UUFDekIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDckMsQ0FBQztJQUVFLGtCQUFrQixDQUFDLEVBQWU7O1lBQ3RDLE1BQU0sR0FBRyxtQ0FDSixFQUFFLEtBQ0wsY0FBYyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUN6QyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUN0RCxDQUFDO1lBRUYsSUFBSSxFQUFFLENBQUMsR0FBRyxFQUFFO2dCQUNWLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDckQseUJBQXlCO2dCQUN6QixHQUFHLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUM1RCxHQUFHLEVBQ0gsRUFBRSxDQUFDLFVBQVUsQ0FDZCxDQUFDO2FBQ0g7WUFFRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUM7S0FBQTtJQUVLLHVCQUF1QixDQUMzQixRQUErQjs7WUFFL0IsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUNoQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFPLElBQVMsRUFBRSxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsSUFBbUIsQ0FBQztnQkFDcEMsT0FBTyxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUEsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0tBQUE7SUFFRCxnREFBZ0Q7SUFDMUMsaUJBQWlCLENBQUMsZ0JBQXdCOztZQUM5QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUF5QjtnQkFDN0QsS0FBSyxFQUFFLHNCQUFzQjtnQkFDN0IsU0FBUyxFQUFFO29CQUNULGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7aUJBQ25EO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsT0FBTyxNQUFNLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRSxDQUFDO0tBQUE7SUFFSyxrQkFBa0I7O1lBQ3RCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQXVCO2dCQUMzRCxLQUFLLEVBQUUsb0JBQW9CO2FBQzVCLENBQUMsQ0FBQztZQUVILE9BQU8sTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9ELENBQUM7S0FBQTtJQUVLLGNBQWMsQ0FBQyxFQUFVOztZQUM3QixNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFtQjtnQkFDdkQsS0FBSyxFQUFFLGdCQUFnQjtnQkFDdkIsU0FBUyxFQUFFO29CQUNULEVBQUU7aUJBQ0g7YUFDRixDQUFDLENBQUM7WUFFSCxPQUFPLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6RCxDQUFDO0tBQUE7SUFFYSx1QkFBdUIsQ0FDbkMsS0FBNkI7O1lBRTdCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQ3hELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQ2xDLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FDcEUsQ0FBQztZQUNGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FDeEMsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQzFFLENBQUM7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUNqQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQ25FLENBQUM7WUFFRixPQUFPO2dCQUNMLFFBQVEsRUFBRSxNQUFNLENBQUMsRUFBRTtnQkFDbkIsYUFBYTtnQkFDYixtQkFBbUI7Z0JBQ25CLFlBQVk7YUFDYixDQUFDO1FBQ0osQ0FBQztLQUFBO0lBRUssaUJBQWlCLENBQUMsS0FBNkI7O1lBQ25ELHFCQUFxQjtZQUNyQixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMxRCxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDOUMsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDcEQsT0FBTyxDQUFDLEdBQUcsRUFDWCxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUNqQixDQUFDO1lBQ0YsTUFBTSxVQUFVLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FDcEQsR0FBRyxFQUNILEtBQUssQ0FBQyxtQkFBbUIsQ0FDMUIsQ0FBQztZQUVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXpELE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBRXBDO2dCQUNELFFBQVEsRUFBRSx5QkFBeUI7Z0JBQ25DLFNBQVMsRUFBRTtvQkFDVCxLQUFLLGtDQUNBLE1BQU0sS0FDVCxhQUFhLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFDekIsVUFBVTt3QkFDVixVQUFVLEdBQ1g7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUM7UUFDNUMsQ0FBQztLQUFBO0lBRUssaUJBQWlCLENBQUMsS0FBNkI7O1lBQ25ELHFCQUFxQjtZQUNyQixNQUFNLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNyRCxNQUFNLFVBQVUsR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUNwRCxHQUFHLEVBQ0gsS0FBSyxDQUFDLG1CQUFtQixDQUMxQixDQUFDO1lBRUYsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFekQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FFcEM7Z0JBQ0QsUUFBUSxFQUFFLHlCQUF5QjtnQkFDbkMsU0FBUyxFQUFFO29CQUNULEtBQUssa0NBQ0EsTUFBTSxLQUNULEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUNaLFVBQVUsR0FDWDtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztRQUM1QyxDQUFDO0tBQUE7SUFFSyxpQkFBaUIsQ0FBQyxFQUFVOztZQUNoQyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFNO2dCQUMzQyxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxTQUFTLEVBQUU7b0JBQ1QsS0FBSyxFQUFFO3dCQUNMLEVBQUU7cUJBQ0g7aUJBQ0Y7YUFDRixDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7UUFDbkMsQ0FBQztLQUFBOzs7O1lBdEtGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBM0RRLGlCQUFpQjtZQUdqQixVQUFVO1lBTlYsZUFBZTtZQUlmLGVBQWU7WUFGZixpQkFBaUI7WUFHakIsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExyQXBvbGxvU2VydmljZSB9IGZyb20gJy4uL2FwaS9sci1hcG9sbG8uc2VydmljZSc7XG5pbXBvcnQgeyBKU09OT2JqZWN0IH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcbmltcG9ydCB7IEVuY3J5cHRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZW5jcnlwdGlvbi9lbmNyeXB0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWZhY3Rvcnkuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LWdyYXBoLnNlcnZpY2UnO1xuaW1wb3J0IHsgS2V5TWV0YVNlcnZpY2UgfSBmcm9tICcuLi9rZXkva2V5LW1ldGEuc2VydmljZSc7XG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4va2V5L2tleS5zZXJ2aWNlJztcbmltcG9ydCB7IEhhc0tleUdyYXBoLCBLZXkgfSBmcm9tICcuLi9rZXkva2V5LnR5cGVzJztcbmltcG9ydCB7IE1haW5Db250YWN0Q2FyZFBsYWluRmllbGRzIH0gZnJvbSAnLi4vcHJvZmlsZS9wcm9maWxlLnR5cGVzJztcbmltcG9ydCB7IEhhc0VkZ2VzIH0gZnJvbSAnLi4vX2NvbW1vbi90eXBlcyc7XG5pbXBvcnQge1xuICBDb250YWN0Q2FyZExpc3RRdWVyeSxcbiAgQ29udGFjdENhcmRRdWVyeSxcbiAgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgU2VhcmNoQ29udGFjdENhcmRRdWVyeSxcbiAgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvbixcbn0gZnJvbSAnLi9jb250YWN0LWNhcmQuZ3FsJztcblxuaW50ZXJmYWNlIENvbnRhY3RDYXJkUXVlcnkgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XG4gIGNvbnRhY3RDYXJkOiBDb250YWN0Q2FyZDtcbn1cblxuaW50ZXJmYWNlIFNlYXJjaENvbnRhY3RDYXJkUXVlcnkgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XG4gIHNlYXJjaENvbnRhY3RDYXJkczogSGFzRWRnZXM8Q29udGFjdENhcmQ+O1xufVxuXG5pbnRlcmZhY2UgQ29udGFjdENhcmRMaXN0UXVlcnkgZXh0ZW5kcyBIYXNLZXlHcmFwaCB7XG4gIGNvbnRhY3RDYXJkczogSGFzRWRnZXM8Q29udGFjdENhcmQ+O1xufVxuXG5leHBvcnQgY2xhc3MgQ29udGFjdENhcmQge1xuICBpZDogc3RyaW5nO1xuICBrZXk6IEtleTtcbiAgc2lnUHhrOiBLZXk7XG4gIHB1YmxpY0RhdGE6IHN0cmluZztcbiAgcHVibGljRGF0YVNpZzogc3RyaW5nO1xuICBwdWJsaWNTZWFyY2hhYmxlOiBzdHJpbmc7XG4gIHB1YmxpY1NlYXJjaGFibGVTaWc6IHN0cmluZztcbiAgcGxhaW5EYXRhOiBzdHJpbmc7XG4gIHBsYWluRGF0YVNpZzogc3RyaW5nO1xuICBjaXBoZXJEYXRhOiBzdHJpbmc7XG4gIC8vIFBhcnNlL2RlY3J5cHRlZCB2ZXJzaW9ucyBvZiB0aGUgYWJvdmUuXG4gIHB1YmxpY0RhdGFKc29uOiBKU09OT2JqZWN0O1xuICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogSlNPTk9iamVjdDtcbiAgcGxhaW5DaXBoZXJEYXRhSnNvbjogSlNPTk9iamVjdDtcbiAgcGxhaW5EYXRhSnNvbjogSlNPTk9iamVjdDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb250YWN0Q2FyZElucHV0IHtcbiAgcHVibGljRGF0YUpzb246IEpTT05PYmplY3Q7XG4gIHB1YmxpY1NlYXJjaGFibGVKc29uOiBKU09OT2JqZWN0O1xuICBwbGFpbkNpcGhlckRhdGFKc29uOiBKU09OT2JqZWN0O1xuICBwbGFpbkRhdGFKc29uOiBNYWluQ29udGFjdENhcmRQbGFpbkZpZWxkcztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVDb250YWN0Q2FyZElucHV0IGV4dGVuZHMgQ3JlYXRlQ29udGFjdENhcmRJbnB1dCB7XG4gIGlkOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBDb250YWN0Q2FyZFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5U2VydmljZTogS2V5U2VydmljZSxcbiAgICBwcml2YXRlIGxyQXBvbGxvOiBMckFwb2xsb1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBrZXlHcmFwaDogS2V5R3JhcGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgZW5jcnlwdGlvblNlcnZpY2U6IEVuY3J5cHRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUga2V5TWV0YVNlcnZpY2U6IEtleU1ldGFTZXJ2aWNlXG4gICkge31cblxuICBhc3luYyBkZWNyeXB0Q29udGFjdENhcmQoY2M6IENvbnRhY3RDYXJkKTogUHJvbWlzZTxDb250YWN0Q2FyZD4ge1xuICAgIGNvbnN0IHJldCA9IHtcbiAgICAgIC4uLmNjLFxuICAgICAgcHVibGljRGF0YUpzb246IEpTT04ucGFyc2UoY2MucHVibGljRGF0YSksXG4gICAgICBwdWJsaWNTZWFyY2hhYmxlSnNvbjogSlNPTi5wYXJzZShjYy5wdWJsaWNTZWFyY2hhYmxlKSxcbiAgICB9O1xuXG4gICAgaWYgKGNjLmtleSkge1xuICAgICAgY29uc3Qga2V5ID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5nZXRKd2tLZXkoY2Mua2V5LmlkKTtcbiAgICAgIC8vIFRPRE86IHZlcmlmeSBzaWduYXR1cmVcbiAgICAgIHJldC5wbGFpbkNpcGhlckRhdGFKc29uID0gYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5kZWNyeXB0KFxuICAgICAgICBrZXksXG4gICAgICAgIGNjLmNpcGhlckRhdGFcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIGFzeW5jIGRlY3J5cHRDb250YWN0Q2FyZEVkZ2VzKFxuICAgIGhhc0VkZ2VzOiBIYXNFZGdlczxDb250YWN0Q2FyZD5cbiAgKTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaGFzRWRnZXMuZWRnZXMubWFwKGFzeW5jIChlZGdlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgY2MgPSBlZGdlLm5vZGUgYXMgQ29udGFjdENhcmQ7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChjYyk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvLyB7IFwiZmlsdGVyXCI6IFt7IFwiY29udGFpbnNcIjogeyBcImFcIjogdHJ1ZSB9IH1dIH1cbiAgYXN5bmMgc2VhcmNoQ29udGFjdENhcmQocHVibGljU2VhcmNoYWJsZTogb2JqZWN0KTogUHJvbWlzZTxDb250YWN0Q2FyZFtdPiB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8U2VhcmNoQ29udGFjdENhcmRRdWVyeT4oe1xuICAgICAgcXVlcnk6IFNlYXJjaENvbnRhY3RDYXJkUXVlcnksXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgcHVibGljU2VhcmNoYWJsZTogSlNPTi5zdHJpbmdpZnkocHVibGljU2VhcmNoYWJsZSksXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZGVjcnlwdENvbnRhY3RDYXJkRWRnZXMoZGF0YS5zZWFyY2hDb250YWN0Q2FyZHMpO1xuICB9XG5cbiAgYXN5bmMgZ2V0Q29udGFjdENhcmRMaXN0KCk6IFByb21pc2U8Q29udGFjdENhcmRbXT4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PENvbnRhY3RDYXJkTGlzdFF1ZXJ5Pih7XG4gICAgICBxdWVyeTogQ29udGFjdENhcmRMaXN0UXVlcnksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kZWNyeXB0Q29udGFjdENhcmRFZGdlcyhkYXRhLmNvbnRhY3RDYXJkcyk7XG4gIH1cblxuICBhc3luYyBnZXRDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxDb250YWN0Q2FyZD4ge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PENvbnRhY3RDYXJkUXVlcnk+KHtcbiAgICAgIHF1ZXJ5OiBDb250YWN0Q2FyZFF1ZXJ5LFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmRlY3J5cHRDb250YWN0Q2FyZChkYXRhLmNvbnRhY3RDYXJkKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoXG4gICAgaW5wdXQ6IENyZWF0ZUNvbnRhY3RDYXJkSW5wdXRcbiAgKTogUHJvbWlzZTxhbnk+IHtcbiAgICBjb25zdCBzaWdQeGsgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFNpZ1B4aygpO1xuICAgIGNvbnN0IHB1YmxpY0RhdGFTaWcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCBpbnB1dC5wdWJsaWNEYXRhSnNvbilcbiAgICApO1xuICAgIGNvbnN0IHB1YmxpY1NlYXJjaGFibGVTaWcgPSBKU09OLnN0cmluZ2lmeShcbiAgICAgIGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2Uuc2lnbihzaWdQeGsuandrLCBpbnB1dC5wdWJsaWNTZWFyY2hhYmxlSnNvbilcbiAgICApO1xuICAgIGNvbnN0IHBsYWluRGF0YVNpZyA9IEpTT04uc3RyaW5naWZ5KFxuICAgICAgYXdhaXQgdGhpcy5lbmNyeXB0aW9uU2VydmljZS5zaWduKHNpZ1B4ay5qd2ssIGlucHV0LnBsYWluRGF0YUpzb24pXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzaWdQeGtJZDogc2lnUHhrLmlkLFxuICAgICAgcHVibGljRGF0YVNpZyxcbiAgICAgIHB1YmxpY1NlYXJjaGFibGVTaWcsXG4gICAgICBwbGFpbkRhdGFTaWcsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNvbnRhY3RDYXJkKGlucHV0OiBDcmVhdGVDb250YWN0Q2FyZElucHV0KTogUHJvbWlzZTxDb250YWN0Q2FyZD4ge1xuICAgIC8vIEdldCBlbmNyeXB0aW9uIGtleVxuICAgIGNvbnN0IHJvb3RLZXkgPSBhd2FpdCB0aGlzLmtleVNlcnZpY2UuZ2V0Q3VycmVudFJvb3RLZXkoKTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUZhY3RvcnkuY3JlYXRlS2V5KCk7XG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGguZW5jcnlwdFRvU3RyaW5nKFxuICAgICAgcm9vdEtleS5qd2ssXG4gICAgICBrZXkudG9KU09OKHRydWUpXG4gICAgKTtcbiAgICBjb25zdCBjaXBoZXJEYXRhID0gYXdhaXQgdGhpcy5rZXlHcmFwaC5lbmNyeXB0VG9TdHJpbmcoXG4gICAgICBrZXksXG4gICAgICBpbnB1dC5wbGFpbkNpcGhlckRhdGFKc29uXG4gICAgKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IGF3YWl0IHRoaXMucHJlcGFyZUNvbnRhY3RDYXJkSW5wdXQoaW5wdXQpO1xuXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlPHtcbiAgICAgIGNyZWF0ZUNvbnRhY3RDYXJkOiB7IGNvbnRhY3RDYXJkOiBDb250YWN0Q2FyZCB9O1xuICAgIH0+KHtcbiAgICAgIG11dGF0aW9uOiBDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uLFxuICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgLi4ucGFyYW1zLFxuICAgICAgICAgIHdyYXBwaW5nS2V5SWQ6IHJvb3RLZXkuaWQsXG4gICAgICAgICAgd3JhcHBlZEtleSxcbiAgICAgICAgICBjaXBoZXJEYXRhLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmNyZWF0ZUNvbnRhY3RDYXJkLmNvbnRhY3RDYXJkO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlQ29udGFjdENhcmQoaW5wdXQ6IFVwZGF0ZUNvbnRhY3RDYXJkSW5wdXQpOiBQcm9taXNlPENvbnRhY3RDYXJkPiB7XG4gICAgLy8gR2V0IGVuY3J5cHRpb24ga2V5XG4gICAgY29uc3QgY2MgPSBhd2FpdCB0aGlzLmdldENvbnRhY3RDYXJkKGlucHV0LmlkKTtcbiAgICBjb25zdCBrZXkgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmdldEp3a0tleShjYy5rZXkuaWQpO1xuICAgIGNvbnN0IGNpcGhlckRhdGEgPSBhd2FpdCB0aGlzLmtleUdyYXBoLmVuY3J5cHRUb1N0cmluZyhcbiAgICAgIGtleSxcbiAgICAgIGlucHV0LnBsYWluQ2lwaGVyRGF0YUpzb25cbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0gYXdhaXQgdGhpcy5wcmVwYXJlQ29udGFjdENhcmRJbnB1dChpbnB1dCk7XG5cbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8e1xuICAgICAgdXBkYXRlQ29udGFjdENhcmQ6IHsgY29udGFjdENhcmQ6IENvbnRhY3RDYXJkIH07XG4gICAgfT4oe1xuICAgICAgbXV0YXRpb246IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24sXG4gICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgaW5wdXQ6IHtcbiAgICAgICAgICAuLi5wYXJhbXMsXG4gICAgICAgICAgaWQ6IGlucHV0LmlkLFxuICAgICAgICAgIGNpcGhlckRhdGEsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRhdGEudXBkYXRlQ29udGFjdENhcmQuY29udGFjdENhcmQ7XG4gIH1cblxuICBhc3luYyBkZWxldGVDb250YWN0Q2FyZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5sckFwb2xsby5tdXRhdGU8YW55Pih7XG4gICAgICBtdXRhdGlvbjogRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvbixcbiAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICBpbnB1dDoge1xuICAgICAgICAgIGlkLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhLmRlbGV0ZUNvbnRhY3RDYXJkLmlkO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { gqlTyped } from '../_common/ast';
|
|
2
|
+
export const CreateContactCardMutation = gqlTyped `
|
|
3
|
+
mutation CreateContactCardMutation(
|
|
4
|
+
$input: CreateContactCardInput!
|
|
5
|
+
) {
|
|
6
|
+
createContactCard(input: $input) {
|
|
7
|
+
contactCard {
|
|
8
|
+
id
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
`;
|
|
13
|
+
export const UpdateContactCardMutation = gqlTyped `
|
|
14
|
+
mutation UpdateContactCardMutation($input: UpdateContactCardInput!) {
|
|
15
|
+
updateContactCard(input: $input) {
|
|
16
|
+
contactCard {
|
|
17
|
+
id
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
`;
|
|
22
|
+
export const DeleteContactCardMutation = gqlTyped `
|
|
23
|
+
mutation DeleteContactCardMutation($input: DeleteContactCardInput!) {
|
|
24
|
+
deleteContactCard(input: $input) {
|
|
25
|
+
id
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFjdC1jYXJkMi5ncWwuanMiLCJzb3VyY2VSb290IjoiL29wdC9hdGxhc3NpYW4vcGlwZWxpbmVzL2FnZW50L2J1aWxkL3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbnRhY3QtY2FyZC9jb250YWN0LWNhcmQyLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFTMUMsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFpQzs7Ozs7Ozs7OztDQVVqRixDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsUUFBUSxDQUFpQzs7Ozs7Ozs7Q0FRakYsQ0FBQztBQVNGLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLFFBQVEsQ0FBaUM7Ozs7OztDQU1qRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSUQgfSBmcm9tICcuLi9hcGkvdHlwZXMnO1xuaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ29udGFjdENhcmRNdXRhdGlvblJlc3VsdCB7XG4gIGNyZWF0ZUNvbnRhY3RDYXJkOiB7XG4gICAgY29udGFjdENhcmQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxUeXBlZDxDcmVhdGVDb250YWN0Q2FyZE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIENyZWF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oXG4gICRpbnB1dDogQ3JlYXRlQ29udGFjdENhcmRJbnB1dCFcbikge1xuICBjcmVhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgY29udGFjdENhcmQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ29udGFjdENhcmRNdXRhdGlvblJlc3VsdCB7XG4gIHVwZGF0ZUNvbnRhY3RDYXJkOiB7XG4gICAgY29udGFjdENhcmQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxUeXBlZDxVcGRhdGVDb250YWN0Q2FyZE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIFVwZGF0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBVcGRhdGVDb250YWN0Q2FyZElucHV0ISkge1xuICB1cGRhdGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgY29udGFjdENhcmQge1xuICAgICAgaWRcbiAgICB9XG4gIH1cbn1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQ29udGFjdENhcmRNdXRhdGlvblJlc3VsdCB7XG4gIGRlbGV0ZUNvbnRhY3RDYXJkOiB7XG4gICAgZGVsZXRlQ29udGFjdENhcmQ6IHtcbiAgICAgIGlkOiBJRDtcbiAgICB9O1xuICB9O1xufVxuZXhwb3J0IGNvbnN0IERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24gPSBncWxUeXBlZDxEZWxldGVDb250YWN0Q2FyZE11dGF0aW9uUmVzdWx0PmBcbm11dGF0aW9uIERlbGV0ZUNvbnRhY3RDYXJkTXV0YXRpb24oJGlucHV0OiBEZWxldGVDb250YWN0Q2FyZElucHV0ISkge1xuICBkZWxldGVDb250YWN0Q2FyZChpbnB1dDogJGlucHV0KSB7XG4gICAgaWRcbiAgfVxufVxuYDtcbiJdfQ==
|