@lifeready/core 0.6.0-beta.1

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.
Files changed (225) hide show
  1. package/README.md +62 -0
  2. package/bundles/lifeready-core.umd.js +15939 -0
  3. package/bundles/lifeready-core.umd.js.map +1 -0
  4. package/bundles/lifeready-core.umd.min.js +2 -0
  5. package/bundles/lifeready-core.umd.min.js.map +1 -0
  6. package/esm2015/lib/_common/ast.js +40 -0
  7. package/esm2015/lib/_common/deferred-promise.js +24 -0
  8. package/esm2015/lib/_common/exceptions.js +157 -0
  9. package/esm2015/lib/_common/queries.gql.js +190 -0
  10. package/esm2015/lib/_common/run-outside-angular.js +79 -0
  11. package/esm2015/lib/_common/types.js +1 -0
  12. package/esm2015/lib/_common/utils.js +44 -0
  13. package/esm2015/lib/api/contact-card.gql.js +79 -0
  14. package/esm2015/lib/api/contact-card.service.js +154 -0
  15. package/esm2015/lib/api/contact-card2.gql.js +60 -0
  16. package/esm2015/lib/api/contact-card2.service.js +103 -0
  17. package/esm2015/lib/api/file.service.js +74 -0
  18. package/esm2015/lib/api/item2.gql.js +110 -0
  19. package/esm2015/lib/api/item2.service.js +311 -0
  20. package/esm2015/lib/api/key-exchange.gql.js +188 -0
  21. package/esm2015/lib/api/key-exchange.service.js +442 -0
  22. package/esm2015/lib/api/key-exchange.types.js +18 -0
  23. package/esm2015/lib/api/key-exchange2.gql.js +171 -0
  24. package/esm2015/lib/api/key-exchange2.service.js +479 -0
  25. package/esm2015/lib/api/lock.gql.js +40 -0
  26. package/esm2015/lib/api/lock.service.js +64 -0
  27. package/esm2015/lib/api/lr-apollo.service.js +46 -0
  28. package/esm2015/lib/api/lr-graphql/index.js +6 -0
  29. package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +155 -0
  30. package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +213 -0
  31. package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +51 -0
  32. package/esm2015/lib/api/lr-graphql/lr-mutation.js +48 -0
  33. package/esm2015/lib/api/lr-graphql/lr.service.js +18 -0
  34. package/esm2015/lib/api/message.service.js +138 -0
  35. package/esm2015/lib/api/persist.service.js +181 -0
  36. package/esm2015/lib/api/query-processor/common-processors.service.js +93 -0
  37. package/esm2015/lib/api/query-processor/index.js +3 -0
  38. package/esm2015/lib/api/query-processor/query-processor.service.js +192 -0
  39. package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +109 -0
  40. package/esm2015/lib/api/shared-contact-card.service.js +119 -0
  41. package/esm2015/lib/api/shared-contact-card2.gql.js +41 -0
  42. package/esm2015/lib/api/shared-contact-card2.service.js +117 -0
  43. package/esm2015/lib/api/time.service.js +146 -0
  44. package/esm2015/lib/api/types/graphql.types.js +7 -0
  45. package/esm2015/lib/api/types/index.js +3 -0
  46. package/esm2015/lib/api/types/lr-graphql.types.js +71 -0
  47. package/esm2015/lib/auth/auth.config.js +57 -0
  48. package/esm2015/lib/auth/auth.gql.js +48 -0
  49. package/esm2015/lib/auth/auth.types.js +27 -0
  50. package/esm2015/lib/auth/idle.service.js +168 -0
  51. package/esm2015/lib/auth/idle.types.js +7 -0
  52. package/esm2015/lib/auth/lbop.service.js +355 -0
  53. package/esm2015/lib/auth/life-ready-auth.service.js +333 -0
  54. package/esm2015/lib/auth/password.service.js +320 -0
  55. package/esm2015/lib/auth/register.service.js +172 -0
  56. package/esm2015/lib/auth/two-factor.service.js +74 -0
  57. package/esm2015/lib/category/category-meta.service.js +99 -0
  58. package/esm2015/lib/category/category.gql.js +406 -0
  59. package/esm2015/lib/category/category.service.js +390 -0
  60. package/esm2015/lib/category/category.types.js +29 -0
  61. package/esm2015/lib/cryptography/cryptography.types.js +11 -0
  62. package/esm2015/lib/cryptography/encryption.service.js +189 -0
  63. package/esm2015/lib/cryptography/key-factory.service.js +237 -0
  64. package/esm2015/lib/cryptography/key-graph.service.js +280 -0
  65. package/esm2015/lib/cryptography/key-meta.service.js +200 -0
  66. package/esm2015/lib/cryptography/key.service.js +124 -0
  67. package/esm2015/lib/cryptography/slip39.service.js +169 -0
  68. package/esm2015/lib/cryptography/web-crypto.service.js +29 -0
  69. package/esm2015/lib/life-ready.config.js +84 -0
  70. package/esm2015/lib/life-ready.module.js +74 -0
  71. package/esm2015/lib/plan/plan.gql.js +123 -0
  72. package/esm2015/lib/plan/plan.service.js +149 -0
  73. package/esm2015/lib/plan/plan.types.js +11 -0
  74. package/esm2015/lib/record/record-attachment.service.js +101 -0
  75. package/esm2015/lib/record/record.gql.js +179 -0
  76. package/esm2015/lib/record/record.service.js +206 -0
  77. package/esm2015/lib/record/record.types.js +15 -0
  78. package/esm2015/lib/record-type/record-type.service.js +75 -0
  79. package/esm2015/lib/record-type/record-type.types.js +28 -0
  80. package/esm2015/lib/scenario/approvals/scenario-approval.gql.js +105 -0
  81. package/esm2015/lib/scenario/approvals/scenario-approval.types.js +1 -0
  82. package/esm2015/lib/scenario/approvals/scenario-approver.service.js +300 -0
  83. package/esm2015/lib/scenario/claimants/scenario-claimant.gql.js +52 -0
  84. package/esm2015/lib/scenario/claimants/scenario-claimant.service.js +97 -0
  85. package/esm2015/lib/scenario/claimants/scenario-claimant.types.js +1 -0
  86. package/esm2015/lib/scenario/receivers/scenario-receiver.gql.js +150 -0
  87. package/esm2015/lib/scenario/receivers/scenario-receiver.service.js +229 -0
  88. package/esm2015/lib/scenario/receivers/scenario-receiver.types.js +1 -0
  89. package/esm2015/lib/scenario/scenario-setup.service.js +269 -0
  90. package/esm2015/lib/scenario/scenario.gql.js +368 -0
  91. package/esm2015/lib/scenario/scenario.service.js +611 -0
  92. package/esm2015/lib/scenario/scenario.types.js +64 -0
  93. package/esm2015/lib/search/search.gql.js +62 -0
  94. package/esm2015/lib/search/search.service.js +156 -0
  95. package/esm2015/lib/search/search.types.js +6 -0
  96. package/esm2015/lib/trusted-parties/tp-password-reset-request.service.js +112 -0
  97. package/esm2015/lib/trusted-parties/tp-password-reset-user.service.js +266 -0
  98. package/esm2015/lib/trusted-parties/tp-password-reset.gql.js +232 -0
  99. package/esm2015/lib/trusted-parties/tp-password-reset.service.js +300 -0
  100. package/esm2015/lib/trusted-parties/trusted-party.gql.js +148 -0
  101. package/esm2015/lib/trusted-parties/trusted-party.service.js +326 -0
  102. package/esm2015/lib/trusted-parties/trusted-party.types.js +41 -0
  103. package/esm2015/lib/trusted-parties/trusted-party2.gql.js +87 -0
  104. package/esm2015/lib/trusted-parties/trusted-party2.service.js +215 -0
  105. package/esm2015/lib/users/profile-details.service.js +214 -0
  106. package/esm2015/lib/users/profile.gql.js +97 -0
  107. package/esm2015/lib/users/profile.service.js +169 -0
  108. package/esm2015/lib/users/profile.types.js +34 -0
  109. package/esm2015/lib/users/user.gql.js +60 -0
  110. package/esm2015/lib/users/user.service.js +79 -0
  111. package/esm2015/lib/users/user.types.js +5 -0
  112. package/esm2015/lifeready-core.js +10 -0
  113. package/esm2015/public-api.js +81 -0
  114. package/fesm2015/lifeready-core.js +13290 -0
  115. package/fesm2015/lifeready-core.js.map +1 -0
  116. package/lib/_common/ast.d.ts +11 -0
  117. package/lib/_common/deferred-promise.d.ts +12 -0
  118. package/lib/_common/exceptions.d.ts +109 -0
  119. package/lib/_common/queries.gql.d.ts +10 -0
  120. package/lib/_common/run-outside-angular.d.ts +14 -0
  121. package/lib/_common/types.d.ts +10 -0
  122. package/lib/_common/utils.d.ts +3 -0
  123. package/lib/api/contact-card.gql.d.ts +7 -0
  124. package/lib/api/contact-card.service.d.ts +52 -0
  125. package/lib/api/contact-card2.gql.d.ts +34 -0
  126. package/lib/api/contact-card2.service.d.ts +49 -0
  127. package/lib/api/file.service.d.ts +18 -0
  128. package/lib/api/item2.gql.d.ts +96 -0
  129. package/lib/api/item2.service.d.ts +177 -0
  130. package/lib/api/key-exchange.gql.d.ts +9 -0
  131. package/lib/api/key-exchange.service.d.ts +39 -0
  132. package/lib/api/key-exchange.types.d.ts +196 -0
  133. package/lib/api/key-exchange2.gql.d.ts +125 -0
  134. package/lib/api/key-exchange2.service.d.ts +187 -0
  135. package/lib/api/lock.gql.d.ts +27 -0
  136. package/lib/api/lock.service.d.ts +25 -0
  137. package/lib/api/lr-apollo.service.d.ts +15 -0
  138. package/lib/api/lr-graphql/index.d.ts +5 -0
  139. package/lib/api/lr-graphql/lr-graphql.service.d.ts +60 -0
  140. package/lib/api/lr-graphql/lr-merged-mutation.d.ts +27 -0
  141. package/lib/api/lr-graphql/lr-mutation-base.d.ts +28 -0
  142. package/lib/api/lr-graphql/lr-mutation.d.ts +8 -0
  143. package/lib/api/lr-graphql/lr.service.d.ts +9 -0
  144. package/lib/api/message.service.d.ts +58 -0
  145. package/lib/api/persist.service.d.ts +31 -0
  146. package/lib/api/query-processor/common-processors.service.d.ts +36 -0
  147. package/lib/api/query-processor/index.d.ts +2 -0
  148. package/lib/api/query-processor/query-processor.service.d.ts +18 -0
  149. package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +15 -0
  150. package/lib/api/shared-contact-card.service.d.ts +33 -0
  151. package/lib/api/shared-contact-card2.gql.d.ts +36 -0
  152. package/lib/api/shared-contact-card2.service.d.ts +45 -0
  153. package/lib/api/time.service.d.ts +16 -0
  154. package/lib/api/types/graphql.types.d.ts +29 -0
  155. package/lib/api/types/index.d.ts +2 -0
  156. package/lib/api/types/lr-graphql.types.d.ts +385 -0
  157. package/lib/auth/auth.config.d.ts +5 -0
  158. package/lib/auth/auth.gql.d.ts +15 -0
  159. package/lib/auth/auth.types.d.ts +66 -0
  160. package/lib/auth/idle.service.d.ts +40 -0
  161. package/lib/auth/idle.types.d.ts +10 -0
  162. package/lib/auth/lbop.service.d.ts +91 -0
  163. package/lib/auth/life-ready-auth.service.d.ts +46 -0
  164. package/lib/auth/password.service.d.ts +78 -0
  165. package/lib/auth/register.service.d.ts +25 -0
  166. package/lib/auth/two-factor.service.d.ts +15 -0
  167. package/lib/category/category-meta.service.d.ts +23 -0
  168. package/lib/category/category.gql.d.ts +45 -0
  169. package/lib/category/category.service.d.ts +67 -0
  170. package/lib/category/category.types.d.ts +79 -0
  171. package/lib/cryptography/cryptography.types.d.ts +83 -0
  172. package/lib/cryptography/encryption.service.d.ts +41 -0
  173. package/lib/cryptography/key-factory.service.d.ts +38 -0
  174. package/lib/cryptography/key-graph.service.d.ts +33 -0
  175. package/lib/cryptography/key-meta.service.d.ts +44 -0
  176. package/lib/cryptography/key.service.d.ts +36 -0
  177. package/lib/cryptography/slip39.service.d.ts +43 -0
  178. package/lib/cryptography/web-crypto.service.d.ts +5 -0
  179. package/lib/life-ready.config.d.ts +14 -0
  180. package/lib/life-ready.module.d.ts +5 -0
  181. package/lib/plan/plan.gql.d.ts +11 -0
  182. package/lib/plan/plan.service.d.ts +33 -0
  183. package/lib/plan/plan.types.d.ts +31 -0
  184. package/lib/record/record-attachment.service.d.ts +16 -0
  185. package/lib/record/record.gql.d.ts +14 -0
  186. package/lib/record/record.service.d.ts +25 -0
  187. package/lib/record/record.types.d.ts +57 -0
  188. package/lib/record-type/record-type.service.d.ts +11 -0
  189. package/lib/record-type/record-type.types.d.ts +50 -0
  190. package/lib/scenario/approvals/scenario-approval.gql.d.ts +7 -0
  191. package/lib/scenario/approvals/scenario-approval.types.d.ts +63 -0
  192. package/lib/scenario/approvals/scenario-approver.service.d.ts +32 -0
  193. package/lib/scenario/claimants/scenario-claimant.gql.d.ts +5 -0
  194. package/lib/scenario/claimants/scenario-claimant.service.d.ts +17 -0
  195. package/lib/scenario/claimants/scenario-claimant.types.d.ts +18 -0
  196. package/lib/scenario/receivers/scenario-receiver.gql.d.ts +8 -0
  197. package/lib/scenario/receivers/scenario-receiver.service.d.ts +30 -0
  198. package/lib/scenario/receivers/scenario-receiver.types.d.ts +54 -0
  199. package/lib/scenario/scenario-setup.service.d.ts +22 -0
  200. package/lib/scenario/scenario.gql.d.ts +34 -0
  201. package/lib/scenario/scenario.service.d.ts +58 -0
  202. package/lib/scenario/scenario.types.d.ts +217 -0
  203. package/lib/search/search.gql.d.ts +1 -0
  204. package/lib/search/search.service.d.ts +25 -0
  205. package/lib/search/search.types.d.ts +20 -0
  206. package/lib/trusted-parties/tp-password-reset-request.service.d.ts +20 -0
  207. package/lib/trusted-parties/tp-password-reset-user.service.d.ts +41 -0
  208. package/lib/trusted-parties/tp-password-reset.gql.d.ts +218 -0
  209. package/lib/trusted-parties/tp-password-reset.service.d.ts +131 -0
  210. package/lib/trusted-parties/trusted-party.gql.d.ts +9 -0
  211. package/lib/trusted-parties/trusted-party.service.d.ts +44 -0
  212. package/lib/trusted-parties/trusted-party.types.d.ts +102 -0
  213. package/lib/trusted-parties/trusted-party2.gql.d.ts +79 -0
  214. package/lib/trusted-parties/trusted-party2.service.d.ts +114 -0
  215. package/lib/users/profile-details.service.d.ts +21 -0
  216. package/lib/users/profile.gql.d.ts +11 -0
  217. package/lib/users/profile.service.d.ts +35 -0
  218. package/lib/users/profile.types.d.ts +96 -0
  219. package/lib/users/user.gql.d.ts +9 -0
  220. package/lib/users/user.service.d.ts +12 -0
  221. package/lib/users/user.types.d.ts +23 -0
  222. package/lifeready-core.d.ts +9 -0
  223. package/lifeready-core.metadata.json +1 -0
  224. package/package.json +29 -0
  225. package/public-api.d.ts +77 -0
@@ -0,0 +1,326 @@
1
+ import { __awaiter } from "tslib";
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { Injectable } from '@angular/core';
4
+ import { KeyExchangeService } from '../api/key-exchange.service';
5
+ import { LrApolloService } from '../api/lr-apollo.service';
6
+ import { SharedContactCardService } from '../api/shared-contact-card.service';
7
+ import { LifeReadyAuthService } from '../auth/life-ready-auth.service';
8
+ import { EncryptionService } from '../cryptography/encryption.service';
9
+ import { KeyGraphService } from '../cryptography/key-graph.service';
10
+ import { KeyService } from '../cryptography/key.service';
11
+ import { UserService } from '../users/user.service';
12
+ import { ContactCardName } from '../users/profile.types';
13
+ import { CancelTrustedPartyInvitationMutation, DeclineTrustedPartyInvitationMutation, DeleteTrustedPartyMutation, GetAllTrustedPartiesQuery, GetTrustedPartiesQuery, GetTrustedPartyQuery, ShareCategoryMutation, UnshareCategoryMutation, } from './trusted-party.gql';
14
+ import { TrustedPartyInviteStatus, TrustedPartyType, TrustedPartyRoleType, } from './trusted-party.types';
15
+ import { KeyFactoryService } from '../cryptography/key-factory.service';
16
+ import * as i0 from "@angular/core";
17
+ import * as i1 from "@angular/common/http";
18
+ import * as i2 from "../api/lr-apollo.service";
19
+ import * as i3 from "../api/shared-contact-card.service";
20
+ import * as i4 from "../users/user.service";
21
+ import * as i5 from "../auth/life-ready-auth.service";
22
+ import * as i6 from "../api/key-exchange.service";
23
+ import * as i7 from "../cryptography/key-graph.service";
24
+ import * as i8 from "../cryptography/key.service";
25
+ import * as i9 from "../cryptography/key-factory.service";
26
+ import * as i10 from "../cryptography/encryption.service";
27
+ export class TrustedPartyService {
28
+ constructor(http, lrApollo, sharedContactCardService, userService, authService, keyExchangeService, keyGraphService, keyService, keyFactory, encryptionService) {
29
+ this.http = http;
30
+ this.lrApollo = lrApollo;
31
+ this.sharedContactCardService = sharedContactCardService;
32
+ this.userService = userService;
33
+ this.authService = authService;
34
+ this.keyExchangeService = keyExchangeService;
35
+ this.keyGraphService = keyGraphService;
36
+ this.keyService = keyService;
37
+ this.keyFactory = keyFactory;
38
+ this.encryptionService = encryptionService;
39
+ }
40
+ getTrustedParties() {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ const { tps } = yield this.lrApollo.query({
43
+ query: GetTrustedPartiesQuery,
44
+ });
45
+ return yield Promise.all(tps.edges.map((x) => this.mapTrustedParty(x.node)));
46
+ });
47
+ }
48
+ getAllTrustedParties() {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ const user = yield this.authService.getUser();
51
+ const { tps, invites, sentInvites } = yield this.lrApollo.query({
52
+ query: GetAllTrustedPartiesQuery,
53
+ variables: {
54
+ userId: user.id,
55
+ isExpired: false,
56
+ },
57
+ });
58
+ return {
59
+ parties: (yield Promise.all(tps.edges.map((x) => this.mapTrustedParty(x.node)))).filter((x) => x),
60
+ invites: (yield Promise.all(invites.edges.map((x) => __awaiter(this, void 0, void 0, function* () {
61
+ return this.mapInvite(yield this.keyExchangeService.decryptKeyExchange(x.node));
62
+ }))))
63
+ .filter((x) => x.status !== TrustedPartyInviteStatus.Completed)
64
+ .filter((x) => x.status !== TrustedPartyInviteStatus.Invited || x.actionRequired),
65
+ sentInvites: (yield Promise.all(sentInvites.edges.map((x) => __awaiter(this, void 0, void 0, function* () {
66
+ return this.mapInvite(yield this.keyExchangeService.decryptKeyExchange(x.node));
67
+ })))).filter((x) => x.status !== TrustedPartyInviteStatus.Completed),
68
+ };
69
+ });
70
+ }
71
+ getTrustedParty(partyId) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const { tp } = yield this.lrApollo.query({
74
+ query: GetTrustedPartyQuery,
75
+ variables: { partyId },
76
+ });
77
+ return yield this.mapTrustedParty(tp);
78
+ });
79
+ }
80
+ getTrustedPartyRoles(roleType = TrustedPartyRoleType.General) {
81
+ return __awaiter(this, void 0, void 0, function* () {
82
+ if (!this.trustedPartyRoles) {
83
+ this.trustedPartyRoles = yield this.http
84
+ .get('/assets/meta/trusted-party-roles.json')
85
+ .toPromise();
86
+ }
87
+ return Promise.resolve(this.trustedPartyRoles.filter((x) => x.roleType === roleType));
88
+ });
89
+ }
90
+ findByEmail(email) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ try {
93
+ const user = yield this.userService.getUserByEmail(email);
94
+ return user
95
+ ? {
96
+ id: user.id,
97
+ email,
98
+ username: user.username,
99
+ isTrustedParty: user.haveTp,
100
+ isMe: user.isCurrentUser,
101
+ }
102
+ : null;
103
+ }
104
+ catch (e) {
105
+ return null;
106
+ }
107
+ });
108
+ }
109
+ inviteTrustedParty(invite) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ const params = {
112
+ responderUsername: invite.party.username,
113
+ email: invite.party.email,
114
+ message: {
115
+ name: invite.party.name,
116
+ email: invite.party.email,
117
+ message: invite.party.message,
118
+ permissions: invite.permissions,
119
+ },
120
+ contactCard: {
121
+ plainOwnerCipherDataJson: null,
122
+ plainSharedCipherDataJson: invite.mySharedDetails,
123
+ ownerPlainData: {
124
+ name: new ContactCardName(invite.mySharedDetails.name),
125
+ },
126
+ },
127
+ };
128
+ yield this.keyExchangeService.initiateOtk(params);
129
+ });
130
+ }
131
+ cancelInvitation(inviteId) {
132
+ return __awaiter(this, void 0, void 0, function* () {
133
+ yield this.lrApollo.mutate({
134
+ mutation: CancelTrustedPartyInvitationMutation,
135
+ variables: {
136
+ input: {
137
+ id: inviteId,
138
+ },
139
+ },
140
+ });
141
+ });
142
+ }
143
+ getInvitation(inviteId, inviteToken, key) {
144
+ return __awaiter(this, void 0, void 0, function* () {
145
+ const exchange = yield this.keyExchangeService.getKeyExchange(inviteId, {
146
+ token: inviteToken,
147
+ otKeyK: key,
148
+ });
149
+ return this.mapInvite(exchange);
150
+ });
151
+ }
152
+ acceptInvitation(invite) {
153
+ return __awaiter(this, void 0, void 0, function* () {
154
+ const params = {
155
+ id: invite.inviteId,
156
+ token: invite.inviteToken,
157
+ decryptedOtk: invite.decryptedOtk,
158
+ initiatorContactCard: null,
159
+ responderContactCard: {
160
+ plainOwnerCipherDataJson: null,
161
+ plainSharedCipherDataJson: invite.mySharedDetails,
162
+ ownerPlainData: {
163
+ name: new ContactCardName(invite.mySharedDetails.name),
164
+ },
165
+ },
166
+ };
167
+ const { tp } = yield this.keyExchangeService.respondOtk(params);
168
+ return tp.id;
169
+ });
170
+ }
171
+ declineInvitation(inviteId, inviteToken) {
172
+ return __awaiter(this, void 0, void 0, function* () {
173
+ yield this.lrApollo.mutate({
174
+ mutation: DeclineTrustedPartyInvitationMutation,
175
+ variables: {
176
+ input: {
177
+ id: inviteId,
178
+ token: inviteToken,
179
+ },
180
+ },
181
+ });
182
+ });
183
+ }
184
+ confirmInvitation(confirm) {
185
+ return __awaiter(this, void 0, void 0, function* () {
186
+ const { tp } = yield this.keyExchangeService.completeOtk(confirm.inviteId, confirm.initiatorRootKeyCipher, confirm.initiatorOneTimePbkCipher, null);
187
+ return tp.id;
188
+ });
189
+ }
190
+ removeTrustedParty(partyId) {
191
+ return __awaiter(this, void 0, void 0, function* () {
192
+ yield this.lrApollo.mutate({
193
+ mutation: DeleteTrustedPartyMutation,
194
+ variables: {
195
+ input: {
196
+ id: partyId,
197
+ },
198
+ },
199
+ });
200
+ });
201
+ }
202
+ setCategoryAccessLevel(categoryId, keyId, trustedParty, accessLevel) {
203
+ return accessLevel
204
+ ? this.shareDirectory(categoryId, keyId, trustedParty, accessLevel)
205
+ : this.unshareDirectory(categoryId, trustedParty.id);
206
+ }
207
+ setRecordAccessLevel(recordId, keyId, trustedParty, accessLevel) {
208
+ return accessLevel
209
+ ? this.shareDirectory(recordId, keyId, trustedParty, accessLevel)
210
+ : this.unshareDirectory(recordId, trustedParty.id);
211
+ }
212
+ shareDirectory(directoryId, keyId, trustedParty, accessLevel) {
213
+ return __awaiter(this, void 0, void 0, function* () {
214
+ const key = yield this.keyGraphService.getKey(keyId);
215
+ const wrappingKey = yield this.keyGraphService.getKey(trustedParty.userSharedKey.sharedKey.id);
216
+ const wrappedKey = yield this.encryptionService.encrypt(wrappingKey.jwk, key.jwk.toJSON(true));
217
+ yield this.lrApollo.mutate({
218
+ mutation: ShareCategoryMutation,
219
+ variables: {
220
+ input: {
221
+ id: directoryId,
222
+ tpId: trustedParty.id,
223
+ accessRole: accessLevel,
224
+ keyId: key.id,
225
+ wrappingKeyId: wrappingKey.id,
226
+ wrappedKey: JSON.stringify(wrappedKey),
227
+ },
228
+ },
229
+ });
230
+ });
231
+ }
232
+ unshareDirectory(directoryId, trustedPartyId) {
233
+ return __awaiter(this, void 0, void 0, function* () {
234
+ yield this.lrApollo.mutate({
235
+ mutation: UnshareCategoryMutation,
236
+ variables: {
237
+ input: {
238
+ id: directoryId,
239
+ tpId: trustedPartyId,
240
+ },
241
+ },
242
+ });
243
+ });
244
+ }
245
+ mapTrustedParty(tp) {
246
+ var _a;
247
+ return __awaiter(this, void 0, void 0, function* () {
248
+ try {
249
+ const contactCard = tp.sharedContactCard &&
250
+ (yield this.sharedContactCardService.decryptTrustedPartyDetails(tp.sharedContactCard));
251
+ const myContactCard = tp.myContactCard &&
252
+ (yield this.sharedContactCardService.decryptSharedTrustedPartyDetails(tp.myContactCard));
253
+ return {
254
+ id: tp.id,
255
+ type: TrustedPartyType.User,
256
+ hasScenarios: !!tp.sharedScenarios.edges.length,
257
+ hasSharedVault: !!tp.sharedItems.directories.edges.length,
258
+ name: contactCard && contactCard.name && contactCard.name.name,
259
+ details: contactCard,
260
+ mySharedDetails: myContactCard,
261
+ userSharedKey: tp.currentUserSharedKey.userSharedKey,
262
+ username: tp.other.username,
263
+ features: {
264
+ sharedVault: {
265
+ hasAccess: (((_a = tp.other.features) === null || _a === void 0 ? void 0 : _a.shareVault) || ['noaccess'])[0] === 'access',
266
+ },
267
+ },
268
+ };
269
+ }
270
+ catch (e) {
271
+ console.error('Failed to decrypt Trusted Party.', e, tp);
272
+ return null;
273
+ }
274
+ });
275
+ }
276
+ mapInvite(exchange) {
277
+ var _a, _b;
278
+ return __awaiter(this, void 0, void 0, function* () {
279
+ const contactCard = exchange.contactCard;
280
+ const name = exchange.isInitiator
281
+ ? (_a = exchange.myMessage) === null || _a === void 0 ? void 0 : _a.name : contactCard && contactCard.name && contactCard.name.name;
282
+ const email = exchange.isInitiator
283
+ ? (_b = exchange.myMessage) === null || _b === void 0 ? void 0 : _b.email : (contactCard && contactCard.email) || exchange.responderEmailAddress;
284
+ return {
285
+ id: exchange.id,
286
+ type: TrustedPartyType.User,
287
+ status: exchange.state,
288
+ token: exchange.token,
289
+ tokenExpiry: exchange.tokenExpiryTime,
290
+ decryptedOtk: exchange.decryptedOtk,
291
+ name,
292
+ email,
293
+ isSender: exchange.isInitiator,
294
+ actionRequired: exchange.isInitiator
295
+ ? exchange.initiatorActionRequired
296
+ : exchange.responderActionRequired,
297
+ rootKeyCipher: exchange.initiatorRootKeyCipher,
298
+ pbkCipher: exchange.otk.initiatorOneTimePbkCipher,
299
+ isExpired: exchange.isExpired,
300
+ details: contactCard,
301
+ message: exchange.message,
302
+ mySharedDetails: exchange.myContactCard,
303
+ mySharedMessage: exchange.myMessage,
304
+ };
305
+ });
306
+ }
307
+ }
308
+ TrustedPartyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function TrustedPartyService_Factory() { return new TrustedPartyService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.LrApolloService), i0.ɵɵinject(i3.SharedContactCardService), i0.ɵɵinject(i4.UserService), i0.ɵɵinject(i5.LifeReadyAuthService), i0.ɵɵinject(i6.KeyExchangeService), i0.ɵɵinject(i7.KeyGraphService), i0.ɵɵinject(i8.KeyService), i0.ɵɵinject(i9.KeyFactoryService), i0.ɵɵinject(i10.EncryptionService)); }, token: TrustedPartyService, providedIn: "root" });
309
+ TrustedPartyService.decorators = [
310
+ { type: Injectable, args: [{
311
+ providedIn: 'root',
312
+ },] }
313
+ ];
314
+ TrustedPartyService.ctorParameters = () => [
315
+ { type: HttpClient },
316
+ { type: LrApolloService },
317
+ { type: SharedContactCardService },
318
+ { type: UserService },
319
+ { type: LifeReadyAuthService },
320
+ { type: KeyExchangeService },
321
+ { type: KeyGraphService },
322
+ { type: KeyService },
323
+ { type: KeyFactoryService },
324
+ { type: EncryptionService }
325
+ ];
326
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFLakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXZFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQ0wsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQywwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLHNCQUFzQixFQUN0QixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHVCQUF1QixHQUN4QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFRTCx3QkFBd0IsRUFFeEIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixHQUNyQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFN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QkFDOUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMseUJBQXlCO2dCQUNqRCxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU87Z0JBQ3pCLGVBQWUsRUFBRSxRQUFRLENBQUMsYUFBYTtnQkFDdkMsZUFBZSxFQUFFLFFBQVEsQ0FBQyxTQUFTO2FBQ3BDLENBQUM7O0tBQ0g7Ozs7WUE3VkYsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25COzs7WUE3Q1EsVUFBVTtZQVNWLGVBQWU7WUFDZix3QkFBd0I7WUFNeEIsV0FBVztZQUxYLG9CQUFvQjtZQVBwQixrQkFBa0I7WUFVbEIsZUFBZTtZQUNmLFVBQVU7WUEwQlYsaUJBQWlCO1lBNUJqQixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEpXSyB9IGZyb20gJ25vZGUtam9zZSc7XHJcbmltcG9ydCB7IG1hdGVyaWFsaXplIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBLZXlFeGNoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi9hcGkva2V5LWV4Y2hhbmdlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1xyXG4gIERlY3J5cHRlZEtleUV4Y2hhbmdlLFxyXG4gIFJlc3BvbmRPdGtJbnB1dCxcclxufSBmcm9tICcuLi9hcGkva2V5LWV4Y2hhbmdlLnR5cGVzJztcclxuaW1wb3J0IHsgTHJBcG9sbG9TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2xyLWFwb2xsby5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL3NoYXJlZC1jb250YWN0LWNhcmQuc2VydmljZSc7XHJcbmltcG9ydCB7IExpZmVSZWFkeUF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aC9saWZlLXJlYWR5LWF1dGguc2VydmljZSc7XHJcbmltcG9ydCB7IEFjY2Vzc0xldmVsIH0gZnJvbSAnLi4vY2F0ZWdvcnkvY2F0ZWdvcnkudHlwZXMnO1xyXG5pbXBvcnQgeyBFbmNyeXB0aW9uU2VydmljZSB9IGZyb20gJy4uL2NyeXB0b2dyYXBoeS9lbmNyeXB0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlHcmFwaFNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWdyYXBoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vY3J5cHRvZ3JhcGh5L2tleS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuLi91c2Vycy91c2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250YWN0Q2FyZE5hbWUgfSBmcm9tICcuLi91c2Vycy9wcm9maWxlLnR5cGVzJztcclxuaW1wb3J0IHtcclxuICBDYW5jZWxUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXHJcbiAgRGVjbGluZVRydXN0ZWRQYXJ0eUludml0YXRpb25NdXRhdGlvbixcclxuICBEZWxldGVUcnVzdGVkUGFydHlNdXRhdGlvbixcclxuICBHZXRBbGxUcnVzdGVkUGFydGllc1F1ZXJ5LFxyXG4gIEdldFRydXN0ZWRQYXJ0aWVzUXVlcnksXHJcbiAgR2V0VHJ1c3RlZFBhcnR5UXVlcnksXHJcbiAgU2hhcmVDYXRlZ29yeU11dGF0aW9uLFxyXG4gIFVuc2hhcmVDYXRlZ29yeU11dGF0aW9uLFxyXG59IGZyb20gJy4vdHJ1c3RlZC1wYXJ0eS5ncWwnO1xyXG5pbXBvcnQge1xyXG4gIEFjY2VwdFRydXN0ZWRQYXJ0eUludml0ZSxcclxuICBDb25maXJtVHJ1c3RlZFBhcnR5SW52aXRlLFxyXG4gIEZvdW5kVHJ1c3RlZFBhcnR5LFxyXG4gIEludml0ZVRydXN0ZWRQYXJ0eSxcclxuICBUcnVzdGVkUGFydGllcyxcclxuICBUcnVzdGVkUGFydHksXHJcbiAgVHJ1c3RlZFBhcnR5SW52aXRlLFxyXG4gIFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cyxcclxuICBUcnVzdGVkUGFydHlSb2xlLFxyXG4gIFRydXN0ZWRQYXJ0eVR5cGUsXHJcbiAgVHJ1c3RlZFBhcnR5Um9sZVR5cGUsXHJcbn0gZnJvbSAnLi90cnVzdGVkLXBhcnR5LnR5cGVzJztcclxuaW1wb3J0IHsgS2V5RmFjdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9jcnlwdG9ncmFwaHkva2V5LWZhY3Rvcnkuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJ1c3RlZFBhcnR5U2VydmljZSB7XHJcbiAgcHJpdmF0ZSB0cnVzdGVkUGFydHlSb2xlczogVHJ1c3RlZFBhcnR5Um9sZVtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgbHJBcG9sbG86IExyQXBvbGxvU2VydmljZSxcclxuICAgIHByaXZhdGUgc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlOiBTaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IExpZmVSZWFkeUF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBrZXlFeGNoYW5nZVNlcnZpY2U6IEtleUV4Y2hhbmdlU2VydmljZSxcclxuICAgIHByaXZhdGUga2V5R3JhcGhTZXJ2aWNlOiBLZXlHcmFwaFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleVNlcnZpY2U6IEtleVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGtleUZhY3Rvcnk6IEtleUZhY3RvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbmNyeXB0aW9uU2VydmljZTogRW5jcnlwdGlvblNlcnZpY2VcclxuICApIHt9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcnVzdGVkUGFydGllcygpOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVtdPiB7XHJcbiAgICBjb25zdCB7IHRwcyB9ID0gYXdhaXQgdGhpcy5sckFwb2xsby5xdWVyeTxhbnk+KHtcclxuICAgICAgcXVlcnk6IEdldFRydXN0ZWRQYXJ0aWVzUXVlcnksXHJcbiAgICB9KTtcclxuICAgIHJldHVybiBhd2FpdCBQcm9taXNlLmFsbChcclxuICAgICAgdHBzLmVkZ2VzLm1hcCgoeCkgPT4gdGhpcy5tYXBUcnVzdGVkUGFydHkoeC5ub2RlKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZ2V0QWxsVHJ1c3RlZFBhcnRpZXMoKTogUHJvbWlzZTxUcnVzdGVkUGFydGllcz4ge1xyXG4gICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuYXV0aFNlcnZpY2UuZ2V0VXNlcigpO1xyXG4gICAgY29uc3QgeyB0cHMsIGludml0ZXMsIHNlbnRJbnZpdGVzIH0gPSBhd2FpdCB0aGlzLmxyQXBvbGxvLnF1ZXJ5PGFueT4oe1xyXG4gICAgICBxdWVyeTogR2V0QWxsVHJ1c3RlZFBhcnRpZXNRdWVyeSxcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgdXNlcklkOiB1c2VyLmlkLFxyXG4gICAgICAgIGlzRXhwaXJlZDogZmFsc2UsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBwYXJ0aWVzOiAoXHJcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGw8VHJ1c3RlZFBhcnR5PihcclxuICAgICAgICAgIHRwcy5lZGdlcy5tYXAoKHgpID0+IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHgubm9kZSkpXHJcbiAgICAgICAgKVxyXG4gICAgICApLmZpbHRlcigoeCkgPT4geCksXHJcbiAgICAgIGludml0ZXM6IChcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHlJbnZpdGU+KFxyXG4gICAgICAgICAgaW52aXRlcy5lZGdlcy5tYXAoYXN5bmMgKHgpID0+XHJcbiAgICAgICAgICAgIHRoaXMubWFwSW52aXRlKFxyXG4gICAgICAgICAgICAgIGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmRlY3J5cHRLZXlFeGNoYW5nZSh4Lm5vZGUpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgIClcclxuICAgICAgICAuZmlsdGVyKCh4KSA9PiB4LnN0YXR1cyAhPT0gVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzLkNvbXBsZXRlZClcclxuICAgICAgICAuZmlsdGVyKFxyXG4gICAgICAgICAgKHgpID0+XHJcbiAgICAgICAgICAgIHguc3RhdHVzICE9PSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMuSW52aXRlZCB8fCB4LmFjdGlvblJlcXVpcmVkXHJcbiAgICAgICAgKSxcclxuICAgICAgc2VudEludml0ZXM6IChcclxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbDxUcnVzdGVkUGFydHlJbnZpdGU+KFxyXG4gICAgICAgICAgc2VudEludml0ZXMuZWRnZXMubWFwKGFzeW5jICh4KSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1hcEludml0ZShcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLmtleUV4Y2hhbmdlU2VydmljZS5kZWNyeXB0S2V5RXhjaGFuZ2UoeC5ub2RlKVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICApLmZpbHRlcigoeCkgPT4geC5zdGF0dXMgIT09IFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cy5Db21wbGV0ZWQpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcnVzdGVkUGFydHkocGFydHlJZDogc3RyaW5nKTogUHJvbWlzZTxUcnVzdGVkUGFydHk+IHtcclxuICAgIGNvbnN0IHsgdHAgfSA9IGF3YWl0IHRoaXMubHJBcG9sbG8ucXVlcnk8YW55Pih7XHJcbiAgICAgIHF1ZXJ5OiBHZXRUcnVzdGVkUGFydHlRdWVyeSxcclxuICAgICAgdmFyaWFibGVzOiB7IHBhcnR5SWQgfSxcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMubWFwVHJ1c3RlZFBhcnR5KHRwKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBnZXRUcnVzdGVkUGFydHlSb2xlcyhcclxuICAgIHJvbGVUeXBlOiBUcnVzdGVkUGFydHlSb2xlVHlwZSA9IFRydXN0ZWRQYXJ0eVJvbGVUeXBlLkdlbmVyYWxcclxuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eVJvbGVbXT4ge1xyXG4gICAgaWYgKCF0aGlzLnRydXN0ZWRQYXJ0eVJvbGVzKSB7XHJcbiAgICAgIHRoaXMudHJ1c3RlZFBhcnR5Um9sZXMgPSBhd2FpdCB0aGlzLmh0dHBcclxuICAgICAgICAuZ2V0PFRydXN0ZWRQYXJ0eVJvbGVbXT4oJy9hc3NldHMvbWV0YS90cnVzdGVkLXBhcnR5LXJvbGVzLmpzb24nKVxyXG4gICAgICAgIC50b1Byb21pc2UoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXHJcbiAgICAgIHRoaXMudHJ1c3RlZFBhcnR5Um9sZXMuZmlsdGVyKCh4KSA9PiB4LnJvbGVUeXBlID09PSByb2xlVHlwZSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgZmluZEJ5RW1haWwoZW1haWw6IHN0cmluZyk6IFByb21pc2U8Rm91bmRUcnVzdGVkUGFydHk+IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHVzZXIgPSBhd2FpdCB0aGlzLnVzZXJTZXJ2aWNlLmdldFVzZXJCeUVtYWlsKGVtYWlsKTtcclxuXHJcbiAgICAgIHJldHVybiB1c2VyXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGlkOiB1c2VyLmlkLFxyXG4gICAgICAgICAgICBlbWFpbCxcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHVzZXIudXNlcm5hbWUsXHJcbiAgICAgICAgICAgIGlzVHJ1c3RlZFBhcnR5OiB1c2VyLmhhdmVUcCxcclxuICAgICAgICAgICAgaXNNZTogdXNlci5pc0N1cnJlbnRVc2VyLFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDogbnVsbDtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaW52aXRlVHJ1c3RlZFBhcnR5KGludml0ZTogSW52aXRlVHJ1c3RlZFBhcnR5KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIHJlc3BvbmRlclVzZXJuYW1lOiBpbnZpdGUucGFydHkudXNlcm5hbWUsXHJcbiAgICAgIGVtYWlsOiBpbnZpdGUucGFydHkuZW1haWwsXHJcbiAgICAgIG1lc3NhZ2U6IHtcclxuICAgICAgICBuYW1lOiBpbnZpdGUucGFydHkubmFtZSxcclxuICAgICAgICBlbWFpbDogaW52aXRlLnBhcnR5LmVtYWlsLFxyXG4gICAgICAgIG1lc3NhZ2U6IGludml0ZS5wYXJ0eS5tZXNzYWdlLFxyXG4gICAgICAgIHBlcm1pc3Npb25zOiBpbnZpdGUucGVybWlzc2lvbnMsXHJcbiAgICAgIH0sXHJcbiAgICAgIGNvbnRhY3RDYXJkOiB7XHJcbiAgICAgICAgcGxhaW5Pd25lckNpcGhlckRhdGFKc29uOiBudWxsLFxyXG4gICAgICAgIHBsYWluU2hhcmVkQ2lwaGVyRGF0YUpzb246IGludml0ZS5teVNoYXJlZERldGFpbHMsXHJcbiAgICAgICAgb3duZXJQbGFpbkRhdGE6IHtcclxuICAgICAgICAgIG5hbWU6IG5ldyBDb250YWN0Q2FyZE5hbWUoaW52aXRlLm15U2hhcmVkRGV0YWlscy5uYW1lKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIGF3YWl0IHRoaXMua2V5RXhjaGFuZ2VTZXJ2aWNlLmluaXRpYXRlT3RrKHBhcmFtcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgY2FuY2VsSW52aXRhdGlvbihpbnZpdGVJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XHJcbiAgICAgIG11dGF0aW9uOiBDYW5jZWxUcnVzdGVkUGFydHlJbnZpdGF0aW9uTXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICBpZDogaW52aXRlSWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldEludml0YXRpb24oXHJcbiAgICBpbnZpdGVJZDogc3RyaW5nLFxyXG4gICAgaW52aXRlVG9rZW46IHN0cmluZyxcclxuICAgIGtleTogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTxUcnVzdGVkUGFydHlJbnZpdGU+IHtcclxuICAgIGNvbnN0IGV4Y2hhbmdlID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuZ2V0S2V5RXhjaGFuZ2UoaW52aXRlSWQsIHtcclxuICAgICAgdG9rZW46IGludml0ZVRva2VuLFxyXG4gICAgICBvdEtleUs6IGtleSxcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiB0aGlzLm1hcEludml0ZShleGNoYW5nZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYWNjZXB0SW52aXRhdGlvbihcclxuICAgIGludml0ZTogQWNjZXB0VHJ1c3RlZFBhcnR5SW52aXRlXHJcbiAgKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGNvbnN0IHBhcmFtczogUmVzcG9uZE90a0lucHV0ID0ge1xyXG4gICAgICBpZDogaW52aXRlLmludml0ZUlkLFxyXG4gICAgICB0b2tlbjogaW52aXRlLmludml0ZVRva2VuLFxyXG4gICAgICBkZWNyeXB0ZWRPdGs6IGludml0ZS5kZWNyeXB0ZWRPdGssXHJcbiAgICAgIGluaXRpYXRvckNvbnRhY3RDYXJkOiBudWxsLFxyXG4gICAgICByZXNwb25kZXJDb250YWN0Q2FyZDoge1xyXG4gICAgICAgIHBsYWluT3duZXJDaXBoZXJEYXRhSnNvbjogbnVsbCxcclxuICAgICAgICBwbGFpblNoYXJlZENpcGhlckRhdGFKc29uOiBpbnZpdGUubXlTaGFyZWREZXRhaWxzLFxyXG4gICAgICAgIG93bmVyUGxhaW5EYXRhOiB7XHJcbiAgICAgICAgICBuYW1lOiBuZXcgQ29udGFjdENhcmROYW1lKGludml0ZS5teVNoYXJlZERldGFpbHMubmFtZSksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgeyB0cCB9ID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UucmVzcG9uZE90ayhwYXJhbXMpO1xyXG5cclxuICAgIHJldHVybiB0cC5pZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBkZWNsaW5lSW52aXRhdGlvbihcclxuICAgIGludml0ZUlkOiBzdHJpbmcsXHJcbiAgICBpbnZpdGVUb2tlbjogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XHJcbiAgICAgIG11dGF0aW9uOiBEZWNsaW5lVHJ1c3RlZFBhcnR5SW52aXRhdGlvbk11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgaWQ6IGludml0ZUlkLFxyXG4gICAgICAgICAgdG9rZW46IGludml0ZVRva2VuLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBjb25maXJtSW52aXRhdGlvbihcclxuICAgIGNvbmZpcm06IENvbmZpcm1UcnVzdGVkUGFydHlJbnZpdGVcclxuICApOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgY29uc3QgeyB0cCB9ID0gYXdhaXQgdGhpcy5rZXlFeGNoYW5nZVNlcnZpY2UuY29tcGxldGVPdGsoXHJcbiAgICAgIGNvbmZpcm0uaW52aXRlSWQsXHJcbiAgICAgIGNvbmZpcm0uaW5pdGlhdG9yUm9vdEtleUNpcGhlcixcclxuICAgICAgY29uZmlybS5pbml0aWF0b3JPbmVUaW1lUGJrQ2lwaGVyLFxyXG4gICAgICBudWxsXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIHRwLmlkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlbW92ZVRydXN0ZWRQYXJ0eShwYXJ0eUlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubHJBcG9sbG8ubXV0YXRlKHtcclxuICAgICAgbXV0YXRpb246IERlbGV0ZVRydXN0ZWRQYXJ0eU11dGF0aW9uLFxyXG4gICAgICB2YXJpYWJsZXM6IHtcclxuICAgICAgICBpbnB1dDoge1xyXG4gICAgICAgICAgaWQ6IHBhcnR5SWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENhdGVnb3J5QWNjZXNzTGV2ZWwoXHJcbiAgICBjYXRlZ29yeUlkOiBzdHJpbmcsXHJcbiAgICBrZXlJZDogc3RyaW5nLFxyXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXHJcbiAgICBhY2Nlc3NMZXZlbD86IEFjY2Vzc0xldmVsXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gYWNjZXNzTGV2ZWxcclxuICAgICAgPyB0aGlzLnNoYXJlRGlyZWN0b3J5KGNhdGVnb3J5SWQsIGtleUlkLCB0cnVzdGVkUGFydHksIGFjY2Vzc0xldmVsKVxyXG4gICAgICA6IHRoaXMudW5zaGFyZURpcmVjdG9yeShjYXRlZ29yeUlkLCB0cnVzdGVkUGFydHkuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFJlY29yZEFjY2Vzc0xldmVsKFxyXG4gICAgcmVjb3JkSWQ6IHN0cmluZyxcclxuICAgIGtleUlkOiBzdHJpbmcsXHJcbiAgICB0cnVzdGVkUGFydHk6IFRydXN0ZWRQYXJ0eSxcclxuICAgIGFjY2Vzc0xldmVsOiBBY2Nlc3NMZXZlbFxyXG4gICk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgcmV0dXJuIGFjY2Vzc0xldmVsXHJcbiAgICAgID8gdGhpcy5zaGFyZURpcmVjdG9yeShyZWNvcmRJZCwga2V5SWQsIHRydXN0ZWRQYXJ0eSwgYWNjZXNzTGV2ZWwpXHJcbiAgICAgIDogdGhpcy51bnNoYXJlRGlyZWN0b3J5KHJlY29yZElkLCB0cnVzdGVkUGFydHkuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBzaGFyZURpcmVjdG9yeShcclxuICAgIGRpcmVjdG9yeUlkOiBzdHJpbmcsXHJcbiAgICBrZXlJZDogc3RyaW5nLFxyXG4gICAgdHJ1c3RlZFBhcnR5OiBUcnVzdGVkUGFydHksXHJcbiAgICBhY2Nlc3NMZXZlbDogQWNjZXNzTGV2ZWxcclxuICApOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IGtleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShrZXlJZCk7XHJcbiAgICBjb25zdCB3cmFwcGluZ0tleSA9IGF3YWl0IHRoaXMua2V5R3JhcGhTZXJ2aWNlLmdldEtleShcclxuICAgICAgdHJ1c3RlZFBhcnR5LnVzZXJTaGFyZWRLZXkuc2hhcmVkS2V5LmlkXHJcbiAgICApO1xyXG4gICAgY29uc3Qgd3JhcHBlZEtleSA9IGF3YWl0IHRoaXMuZW5jcnlwdGlvblNlcnZpY2UuZW5jcnlwdChcclxuICAgICAgd3JhcHBpbmdLZXkuandrLFxyXG4gICAgICBrZXkuandrLnRvSlNPTih0cnVlKVxyXG4gICAgKTtcclxuXHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XHJcbiAgICAgIG11dGF0aW9uOiBTaGFyZUNhdGVnb3J5TXV0YXRpb24sXHJcbiAgICAgIHZhcmlhYmxlczoge1xyXG4gICAgICAgIGlucHV0OiB7XHJcbiAgICAgICAgICBpZDogZGlyZWN0b3J5SWQsXHJcbiAgICAgICAgICB0cElkOiB0cnVzdGVkUGFydHkuaWQsXHJcbiAgICAgICAgICBhY2Nlc3NSb2xlOiBhY2Nlc3NMZXZlbCxcclxuICAgICAgICAgIGtleUlkOiBrZXkuaWQsXHJcbiAgICAgICAgICB3cmFwcGluZ0tleUlkOiB3cmFwcGluZ0tleS5pZCxcclxuICAgICAgICAgIHdyYXBwZWRLZXk6IEpTT04uc3RyaW5naWZ5KHdyYXBwZWRLZXkpLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdW5zaGFyZURpcmVjdG9yeShcclxuICAgIGRpcmVjdG9yeUlkOiBzdHJpbmcsXHJcbiAgICB0cnVzdGVkUGFydHlJZDogc3RyaW5nXHJcbiAgKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBhd2FpdCB0aGlzLmxyQXBvbGxvLm11dGF0ZSh7XHJcbiAgICAgIG11dGF0aW9uOiBVbnNoYXJlQ2F0ZWdvcnlNdXRhdGlvbixcclxuICAgICAgdmFyaWFibGVzOiB7XHJcbiAgICAgICAgaW5wdXQ6IHtcclxuICAgICAgICAgIGlkOiBkaXJlY3RvcnlJZCxcclxuICAgICAgICAgIHRwSWQ6IHRydXN0ZWRQYXJ0eUlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBtYXBUcnVzdGVkUGFydHkodHA6IGFueSk6IFByb21pc2U8VHJ1c3RlZFBhcnR5PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBjb250YWN0Q2FyZCA9XHJcbiAgICAgICAgdHAuc2hhcmVkQ29udGFjdENhcmQgJiZcclxuICAgICAgICAoYXdhaXQgdGhpcy5zaGFyZWRDb250YWN0Q2FyZFNlcnZpY2UuZGVjcnlwdFRydXN0ZWRQYXJ0eURldGFpbHMoXHJcbiAgICAgICAgICB0cC5zaGFyZWRDb250YWN0Q2FyZFxyXG4gICAgICAgICkpO1xyXG4gICAgICBjb25zdCBteUNvbnRhY3RDYXJkID1cclxuICAgICAgICB0cC5teUNvbnRhY3RDYXJkICYmXHJcbiAgICAgICAgKGF3YWl0IHRoaXMuc2hhcmVkQ29udGFjdENhcmRTZXJ2aWNlLmRlY3J5cHRTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzKFxyXG4gICAgICAgICAgdHAubXlDb250YWN0Q2FyZFxyXG4gICAgICAgICkpO1xyXG5cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBpZDogdHAuaWQsXHJcbiAgICAgICAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZS5Vc2VyLCAvLyBUT0RPOiB3aGVuIHBhcnRuZXJzXHJcbiAgICAgICAgaGFzU2NlbmFyaW9zOiAhIXRwLnNoYXJlZFNjZW5hcmlvcy5lZGdlcy5sZW5ndGgsXHJcbiAgICAgICAgaGFzU2hhcmVkVmF1bHQ6ICEhdHAuc2hhcmVkSXRlbXMuZGlyZWN0b3JpZXMuZWRnZXMubGVuZ3RoLFxyXG4gICAgICAgIG5hbWU6IGNvbnRhY3RDYXJkICYmIGNvbnRhY3RDYXJkLm5hbWUgJiYgY29udGFjdENhcmQubmFtZS5uYW1lLFxyXG4gICAgICAgIGRldGFpbHM6IGNvbnRhY3RDYXJkLFxyXG4gICAgICAgIG15U2hhcmVkRGV0YWlsczogbXlDb250YWN0Q2FyZCxcclxuICAgICAgICB1c2VyU2hhcmVkS2V5OiB0cC5jdXJyZW50VXNlclNoYXJlZEtleS51c2VyU2hhcmVkS2V5LFxyXG4gICAgICAgIHVzZXJuYW1lOiB0cC5vdGhlci51c2VybmFtZSxcclxuICAgICAgICBmZWF0dXJlczoge1xyXG4gICAgICAgICAgc2hhcmVkVmF1bHQ6IHtcclxuICAgICAgICAgICAgaGFzQWNjZXNzOlxyXG4gICAgICAgICAgICAgICh0cC5vdGhlci5mZWF0dXJlcz8uc2hhcmVWYXVsdCB8fCBbJ25vYWNjZXNzJ10pWzBdID09PSAnYWNjZXNzJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGRlY3J5cHQgVHJ1c3RlZCBQYXJ0eS4nLCBlLCB0cCk7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBtYXBJbnZpdGUoXHJcbiAgICBleGNoYW5nZTogRGVjcnlwdGVkS2V5RXhjaGFuZ2VcclxuICApOiBQcm9taXNlPFRydXN0ZWRQYXJ0eUludml0ZT4ge1xyXG4gICAgY29uc3QgY29udGFjdENhcmQgPSBleGNoYW5nZS5jb250YWN0Q2FyZDtcclxuICAgIGNvbnN0IG5hbWUgPSBleGNoYW5nZS5pc0luaXRpYXRvclxyXG4gICAgICA/IGV4Y2hhbmdlLm15TWVzc2FnZT8ubmFtZVxyXG4gICAgICA6IGNvbnRhY3RDYXJkICYmIGNvbnRhY3RDYXJkLm5hbWUgJiYgY29udGFjdENhcmQubmFtZS5uYW1lO1xyXG4gICAgY29uc3QgZW1haWwgPSBleGNoYW5nZS5pc0luaXRpYXRvclxyXG4gICAgICA/IGV4Y2hhbmdlLm15TWVzc2FnZT8uZW1haWxcclxuICAgICAgOiAoY29udGFjdENhcmQgJiYgY29udGFjdENhcmQuZW1haWwpIHx8IGV4Y2hhbmdlLnJlc3BvbmRlckVtYWlsQWRkcmVzcztcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBpZDogZXhjaGFuZ2UuaWQsXHJcbiAgICAgIHR5cGU6IFRydXN0ZWRQYXJ0eVR5cGUuVXNlciwgLy8gdG9kbyB3aGVuIHBhcnRuZXJzXHJcbiAgICAgIHN0YXR1czogKGV4Y2hhbmdlLnN0YXRlIGFzIHVua25vd24pIGFzIFRydXN0ZWRQYXJ0eUludml0ZVN0YXR1cyxcclxuICAgICAgdG9rZW46IGV4Y2hhbmdlLnRva2VuLFxyXG4gICAgICB0b2tlbkV4cGlyeTogZXhjaGFuZ2UudG9rZW5FeHBpcnlUaW1lLFxyXG4gICAgICBkZWNyeXB0ZWRPdGs6IGV4Y2hhbmdlLmRlY3J5cHRlZE90ayxcclxuICAgICAgbmFtZSxcclxuICAgICAgZW1haWwsXHJcbiAgICAgIGlzU2VuZGVyOiBleGNoYW5nZS5pc0luaXRpYXRvcixcclxuICAgICAgYWN0aW9uUmVxdWlyZWQ6IGV4Y2hhbmdlLmlzSW5pdGlhdG9yXHJcbiAgICAgICAgPyBleGNoYW5nZS5pbml0aWF0b3JBY3Rpb25SZXF1aXJlZFxyXG4gICAgICAgIDogZXhjaGFuZ2UucmVzcG9uZGVyQWN0aW9uUmVxdWlyZWQsXHJcbiAgICAgIHJvb3RLZXlDaXBoZXI6IGV4Y2hhbmdlLmluaXRpYXRvclJvb3RLZXlDaXBoZXIsXHJcbiAgICAgIHBia0NpcGhlcjogZXhjaGFuZ2Uub3RrLmluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXIsXHJcbiAgICAgIGlzRXhwaXJlZDogZXhjaGFuZ2UuaXNFeHBpcmVkLFxyXG4gICAgICBkZXRhaWxzOiBjb250YWN0Q2FyZCxcclxuICAgICAgbWVzc2FnZTogZXhjaGFuZ2UubWVzc2FnZSxcclxuICAgICAgbXlTaGFyZWREZXRhaWxzOiBleGNoYW5nZS5teUNvbnRhY3RDYXJkLFxyXG4gICAgICBteVNoYXJlZE1lc3NhZ2U6IGV4Y2hhbmdlLm15TWVzc2FnZSxcclxuICAgIH07XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,41 @@
1
+ import { TrustedPartyDetails } from './../users/profile.types';
2
+ export class TrustedPartyRole {
3
+ }
4
+ export var TrustedPartyRoleType;
5
+ (function (TrustedPartyRoleType) {
6
+ TrustedPartyRoleType["General"] = "general";
7
+ TrustedPartyRoleType["Scenario"] = "scenario";
8
+ })(TrustedPartyRoleType || (TrustedPartyRoleType = {}));
9
+ export var TrustedPartyType;
10
+ (function (TrustedPartyType) {
11
+ TrustedPartyType["User"] = "user";
12
+ TrustedPartyType["Organisation"] = "organisation";
13
+ })(TrustedPartyType || (TrustedPartyType = {}));
14
+ export var TrustedPartyInviteStatus;
15
+ (function (TrustedPartyInviteStatus) {
16
+ TrustedPartyInviteStatus["Invited"] = "IN_PROGRESS";
17
+ TrustedPartyInviteStatus["Cancelled"] = "CANCELLED";
18
+ TrustedPartyInviteStatus["Declined"] = "DECLINED";
19
+ TrustedPartyInviteStatus["Completed"] = "COMPLETED";
20
+ })(TrustedPartyInviteStatus || (TrustedPartyInviteStatus = {}));
21
+ export class TrustedParties {
22
+ }
23
+ export class SharedTrustedPartyDetails extends TrustedPartyDetails {
24
+ }
25
+ export class TrustedPartyInvite {
26
+ }
27
+ export class TPFeatures {
28
+ }
29
+ export class SharedVaultFeature {
30
+ }
31
+ export class TrustedParty {
32
+ }
33
+ export class FoundTrustedParty {
34
+ }
35
+ export class InviteTrustedParty {
36
+ }
37
+ export class AcceptTrustedPartyInvite {
38
+ }
39
+ export class ConfirmTrustedPartyInvite {
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiJDOi9Qcm9qZWN0cy90ZXN0L3Byb2plY3RzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibGliL3RydXN0ZWQtcGFydGllcy90cnVzdGVkLXBhcnR5LnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRy9ELE1BQU0sT0FBTyxnQkFBZ0I7Q0FRNUI7QUFFRCxNQUFNLENBQU4sSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzlCLDJDQUFtQixDQUFBO0lBQ25CLDZDQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CO0FBRUQsTUFBTSxDQUFOLElBQVksZ0JBR1g7QUFIRCxXQUFZLGdCQUFnQjtJQUMxQixpQ0FBYSxDQUFBO0lBQ2IsaURBQTZCLENBQUE7QUFDL0IsQ0FBQyxFQUhXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHM0I7QUFFRCxNQUFNLENBQU4sSUFBWSx3QkFLWDtBQUxELFdBQVksd0JBQXdCO0lBQ2xDLG1EQUF1QixDQUFBO0lBQ3ZCLG1EQUF1QixDQUFBO0lBQ3ZCLGlEQUFxQixDQUFBO0lBQ3JCLG1EQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFMVyx3QkFBd0IsS0FBeEIsd0JBQXdCLFFBS25DO0FBRUQsTUFBTSxPQUFPLGNBQWM7Q0FJMUI7QUFFRCxNQUFNLE9BQU8seUJBQTBCLFNBQVEsbUJBQW1CO0NBSWpFO0FBRUQsTUFBTSxPQUFPLGtCQUFrQjtDQW9COUI7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQUV0QjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7Q0FFOUI7QUFFRCxNQUFNLE9BQU8sWUFBWTtDQVl4QjtBQUVELE1BQU0sT0FBTyxpQkFBaUI7Q0FNN0I7QUFFRCxNQUFNLE9BQU8sa0JBQWtCO0NBSTlCO0FBRUQsTUFBTSxPQUFPLHdCQUF3QjtDQUtwQztBQUVELE1BQU0sT0FBTyx5QkFBeUI7Q0FJckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIERlY3J5cHRlZE90ayxcclxuICBQcmVwYXJlZFBlcm1pc3Npb25zLFxyXG4gIFVzZXJTaGFyZWRLZXksXHJcbn0gZnJvbSAnLi4vYXBpL2tleS1leGNoYW5nZS50eXBlcyc7XHJcbmltcG9ydCB7IEtleUV4Y2hhbmdlTWVzc2FnZSB9IGZyb20gJy4vLi4vYXBpL2tleS1leGNoYW5nZS50eXBlcyc7XHJcbmltcG9ydCB7IEFjY2Vzc0xldmVsIH0gZnJvbSAnLi8uLi9jYXRlZ29yeS9jYXRlZ29yeS50eXBlcyc7XHJcbmltcG9ydCB7IFRydXN0ZWRQYXJ0eURldGFpbHMgfSBmcm9tICcuLy4uL3VzZXJzL3Byb2ZpbGUudHlwZXMnO1xyXG5pbXBvcnQgeyBGZWF0dXJlQWN0aW9uIH0gZnJvbSAnLi4vYXV0aC9hdXRoLnR5cGVzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHlSb2xlIHtcclxuICBpZDogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICByb2xlVHlwZTogVHJ1c3RlZFBhcnR5Um9sZVR5cGU7XHJcbiAgY2F0ZWdvcmllczoge1xyXG4gICAgY2F0ZWdvcnk6IHN0cmluZ1tdO1xyXG4gICAgYWNjZXNzTGV2ZWw6IEFjY2Vzc0xldmVsO1xyXG4gIH1bXTtcclxufVxyXG5cclxuZXhwb3J0IGVudW0gVHJ1c3RlZFBhcnR5Um9sZVR5cGUge1xyXG4gIEdlbmVyYWwgPSAnZ2VuZXJhbCcsXHJcbiAgU2NlbmFyaW8gPSAnc2NlbmFyaW8nLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBUcnVzdGVkUGFydHlUeXBlIHtcclxuICBVc2VyID0gJ3VzZXInLFxyXG4gIE9yZ2FuaXNhdGlvbiA9ICdvcmdhbmlzYXRpb24nLFxyXG59XHJcblxyXG5leHBvcnQgZW51bSBUcnVzdGVkUGFydHlJbnZpdGVTdGF0dXMge1xyXG4gIEludml0ZWQgPSAnSU5fUFJPR1JFU1MnLFxyXG4gIENhbmNlbGxlZCA9ICdDQU5DRUxMRUQnLFxyXG4gIERlY2xpbmVkID0gJ0RFQ0xJTkVEJyxcclxuICBDb21wbGV0ZWQgPSAnQ09NUExFVEVEJyxcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0aWVzIHtcclxuICBwYXJ0aWVzOiBUcnVzdGVkUGFydHlbXTtcclxuICBpbnZpdGVzOiBUcnVzdGVkUGFydHlJbnZpdGVbXTtcclxuICBzZW50SW52aXRlczogVHJ1c3RlZFBhcnR5SW52aXRlW107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBTaGFyZWRUcnVzdGVkUGFydHlEZXRhaWxzIGV4dGVuZHMgVHJ1c3RlZFBhcnR5RGV0YWlscyB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBvd25lZEtleUlkOiBzdHJpbmc7XHJcbiAgc2hhcmVkS2V5SWQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFRydXN0ZWRQYXJ0eUludml0ZSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICB0eXBlOiBUcnVzdGVkUGFydHlUeXBlO1xyXG4gIHN0YXR1czogVHJ1c3RlZFBhcnR5SW52aXRlU3RhdHVzO1xyXG4gIHRva2VuOiBzdHJpbmc7XHJcbiAgdG9rZW5FeHBpcnk6IHN0cmluZyB8IERhdGU7XHJcbiAgaXNFeHBpcmVkOiBib29sZWFuO1xyXG4gIGlzU2VuZGVyOiBib29sZWFuO1xyXG4gIGFjdGlvblJlcXVpcmVkOiBib29sZWFuO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBlbWFpbDogc3RyaW5nO1xyXG5cclxuICBkZXRhaWxzPzogVHJ1c3RlZFBhcnR5RGV0YWlscztcclxuICBtZXNzYWdlPzogS2V5RXhjaGFuZ2VNZXNzYWdlO1xyXG4gIG15U2hhcmVkRGV0YWlscz86IFRydXN0ZWRQYXJ0eURldGFpbHM7XHJcbiAgbXlTaGFyZWRNZXNzYWdlPzogS2V5RXhjaGFuZ2VNZXNzYWdlO1xyXG5cclxuICByb290S2V5Q2lwaGVyOiBzdHJpbmc7XHJcbiAgcGJrQ2lwaGVyOiBzdHJpbmc7XHJcbiAgZGVjcnlwdGVkT3RrOiBEZWNyeXB0ZWRPdGs7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUUEZlYXR1cmVzIHtcclxuICBzaGFyZWRWYXVsdDogU2hhcmVkVmF1bHRGZWF0dXJlO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2hhcmVkVmF1bHRGZWF0dXJlIHtcclxuICBoYXNBY2Nlc3M6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBUcnVzdGVkUGFydHkge1xyXG4gIGlkOiBzdHJpbmc7XHJcbiAgdHlwZTogVHJ1c3RlZFBhcnR5VHlwZTtcclxuICBuYW1lOiBzdHJpbmc7XHJcblxyXG4gIGhhc1NjZW5hcmlvczogYm9vbGVhbjtcclxuICBoYXNTaGFyZWRWYXVsdDogYm9vbGVhbjtcclxuICBkZXRhaWxzOiBUcnVzdGVkUGFydHlEZXRhaWxzO1xyXG4gIG15U2hhcmVkRGV0YWlsczogU2hhcmVkVHJ1c3RlZFBhcnR5RGV0YWlscztcclxuICB1c2VyU2hhcmVkS2V5OiBVc2VyU2hhcmVkS2V5O1xyXG4gIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgZmVhdHVyZXM6IFRQRmVhdHVyZXM7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBGb3VuZFRydXN0ZWRQYXJ0eSB7XHJcbiAgaWQ6IHN0cmluZztcclxuICBlbWFpbDogc3RyaW5nO1xyXG4gIHVzZXJuYW1lOiBzdHJpbmc7XHJcbiAgaXNUcnVzdGVkUGFydHk6IGJvb2xlYW47XHJcbiAgaXNNZTogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEludml0ZVRydXN0ZWRQYXJ0eSB7XHJcbiAgcGFydHk6IHsgdXNlcm5hbWU/OiBzdHJpbmc7IGVtYWlsPzogc3RyaW5nOyBuYW1lPzogc3RyaW5nOyBtZXNzYWdlPzogc3RyaW5nIH07XHJcbiAgcGVybWlzc2lvbnM/OiBQcmVwYXJlZFBlcm1pc3Npb25zO1xyXG4gIG15U2hhcmVkRGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIEFjY2VwdFRydXN0ZWRQYXJ0eUludml0ZSB7XHJcbiAgaW52aXRlSWQ6IHN0cmluZztcclxuICBpbnZpdGVUb2tlbjogc3RyaW5nO1xyXG4gIGRlY3J5cHRlZE90azogRGVjcnlwdGVkT3RrO1xyXG4gIG15U2hhcmVkRGV0YWlsczogVHJ1c3RlZFBhcnR5RGV0YWlscztcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIENvbmZpcm1UcnVzdGVkUGFydHlJbnZpdGUge1xyXG4gIGludml0ZUlkOiBzdHJpbmc7XHJcbiAgaW5pdGlhdG9yUm9vdEtleUNpcGhlcjogc3RyaW5nO1xyXG4gIGluaXRpYXRvck9uZVRpbWVQYmtDaXBoZXI6IHN0cmluZztcclxufVxyXG4iXX0=
@@ -0,0 +1,87 @@
1
+ import { gqlTyped } from '../_common/ast';
2
+ export const DeleteTpMutation = gqlTyped `
3
+ mutation DeleteTpMutation($input: DeleteTpInput!) {
4
+ deleteTp(input: $input) {
5
+ id
6
+ }
7
+ }
8
+ `;
9
+ export const ShareDirectoryMutation = gqlTyped `
10
+ mutation ShareDirectoryMutation($input: ShareDirectoryInput!) {
11
+ shareDirectory(input: $input) {
12
+ tpDirectory {
13
+ id
14
+ }
15
+ }
16
+ }
17
+ `;
18
+ export const UnshareDirectoryMutation = gqlTyped `
19
+ mutation UnshareDirectoryMutation($input: UnshareDirectoryInput!) {
20
+ unshareDirectory(input: $input) {
21
+ tpDirectory {
22
+ id
23
+ }
24
+ }
25
+ }
26
+ `;
27
+ export const ShareFileMutation = gqlTyped `
28
+ mutation ShareFileMutation($input: ShareFileInput!) {
29
+ shareFile(input: $input) {
30
+ tpFile {
31
+ id
32
+ }
33
+ }
34
+ }
35
+ `;
36
+ export const UnshareFileMutation = gqlTyped `
37
+ mutation UnshareFileMutation($input: UnshareFileInput!) {
38
+ unshareFile(input: $input) {
39
+ tpFile {
40
+ id
41
+ }
42
+ }
43
+ }
44
+ `;
45
+ export const TpCurrentUserSharedKeyQuery = gqlTyped `
46
+ query TpCurrentUserSharedKeyQuery($id: LrRelayIdInput!) {
47
+ tp(id: $id){
48
+ currentUserSharedKey {
49
+ userSharedKey {
50
+ sharedKey {
51
+ id
52
+ }
53
+ mkSharedKey {
54
+ id
55
+ }
56
+ mkPxk {
57
+ id
58
+ }
59
+ mkReshareRequestCipher
60
+ mkReshareRequestSent
61
+ mkReshareResponseCipher
62
+ mkReshareResponseSent
63
+ }
64
+ }
65
+ }
66
+ }
67
+ `;
68
+ export const RequestTpMkReshareMutation = gqlTyped `
69
+ mutation RequestTpMkReshareMutation($input: RequestTpMkReshareInput!) {
70
+ requestTpMkReshare(input: $input) {
71
+ id
72
+ }
73
+ }`;
74
+ export const RespondTpMkReshareMutation = gqlTyped `
75
+ mutation RespondTpMkReshareMutation($input: RespondTpMkReshareInput!) {
76
+ respondTpMkReshare(input: $input) {
77
+ id
78
+ }
79
+ }
80
+ `;
81
+ export const CompleteTpMkReshareMutation = gqlTyped `
82
+ mutation CompleteTpMkReshareMutation($input: CompleteTpMkReshareInput!) {
83
+ completeTpMkReshare(input: $input) {
84
+ id
85
+ }
86
+ }`;
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1c3RlZC1wYXJ0eTIuZ3FsLmpzIiwic291cmNlUm9vdCI6IkM6L1Byb2plY3RzL3Rlc3QvcHJvamVjdHMvY29yZS9zcmMvIiwic291cmNlcyI6WyJsaWIvdHJ1c3RlZC1wYXJ0aWVzL3RydXN0ZWQtcGFydHkyLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFRMUMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsUUFBUSxDQUFrQjs7Ozs7O0NBTXpELENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxRQUFRLENBQXdCOzs7Ozs7OztDQVFyRSxDQUFDO0FBU0YsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsUUFBUSxDQUEwQjs7Ozs7Ozs7Q0FRekUsQ0FBQztBQVNGLE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBbUI7Ozs7Ozs7O0NBUTNELENBQUM7QUFTRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxRQUFRLENBQXFCOzs7Ozs7OztDQVEvRCxDQUFDO0FBdUJGLE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUFHLFFBQVEsQ0FBNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FzQi9FLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxRQUFRLENBQTRCOzs7OztFQUs1RSxDQUFDO0FBT0gsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsUUFBUSxDQUE0Qjs7Ozs7O0NBTTdFLENBQUM7QUFPRixNQUFNLENBQUMsTUFBTSwyQkFBMkIsR0FBRyxRQUFRLENBQTZCOzs7OztFQUs5RSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ3FsVHlwZWQgfSBmcm9tICcuLi9fY29tbW9uL2FzdCc7XHJcbmltcG9ydCB7IElEIH0gZnJvbSAnLi4vYXBpL3R5cGVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlVHBNdXRhdGlvbiB7XHJcbiAgZGVsZXRlVHA6IHtcclxuICAgIGlkOiBJRDtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBEZWxldGVUcE11dGF0aW9uID0gZ3FsVHlwZWQ8RGVsZXRlVHBNdXRhdGlvbj5gXHJcbm11dGF0aW9uIERlbGV0ZVRwTXV0YXRpb24oJGlucHV0OiBEZWxldGVUcElucHV0ISkge1xyXG4gIGRlbGV0ZVRwKGlucHV0OiAkaW5wdXQpIHtcclxuICAgIGlkXHJcbiAgfVxyXG59XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNoYXJlRGlyZWN0b3J5TXV0YXRpb24ge1xyXG4gIHNoYXJlRGlyZWN0b3J5OiB7XHJcbiAgICB0cERpcmVjdG9yeToge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IFNoYXJlRGlyZWN0b3J5TXV0YXRpb24gPSBncWxUeXBlZDxTaGFyZURpcmVjdG9yeU11dGF0aW9uPmBcclxuICBtdXRhdGlvbiBTaGFyZURpcmVjdG9yeU11dGF0aW9uKCRpbnB1dDogU2hhcmVEaXJlY3RvcnlJbnB1dCEpIHtcclxuICAgIHNoYXJlRGlyZWN0b3J5KGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgdHBEaXJlY3Rvcnkge1xyXG4gICAgICAgIGlkXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbiB7XHJcbiAgdW5zaGFyZURpcmVjdG9yeToge1xyXG4gICAgdHBEaXJlY3Rvcnk6IHtcclxuICAgICAgaWQ6IElEO1xyXG4gICAgfTtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBVbnNoYXJlRGlyZWN0b3J5TXV0YXRpb24gPSBncWxUeXBlZDxVbnNoYXJlRGlyZWN0b3J5TXV0YXRpb24+YFxyXG4gIG11dGF0aW9uIFVuc2hhcmVEaXJlY3RvcnlNdXRhdGlvbigkaW5wdXQ6IFVuc2hhcmVEaXJlY3RvcnlJbnB1dCEpIHtcclxuICAgIHVuc2hhcmVEaXJlY3RvcnkoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgICB0cERpcmVjdG9yeSB7XHJcbiAgICAgICAgaWRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU2hhcmVGaWxlTXV0YXRpb24ge1xyXG4gIHNoYXJlRmlsZToge1xyXG4gICAgdHBGaWxlOiB7XHJcbiAgICAgIGlkOiBJRDtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgU2hhcmVGaWxlTXV0YXRpb24gPSBncWxUeXBlZDxTaGFyZUZpbGVNdXRhdGlvbj5gXHJcbiAgbXV0YXRpb24gU2hhcmVGaWxlTXV0YXRpb24oJGlucHV0OiBTaGFyZUZpbGVJbnB1dCEpIHtcclxuICAgIHNoYXJlRmlsZShpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIHRwRmlsZSB7XHJcbiAgICAgICAgaWRcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuYDtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgVW5zaGFyZUZpbGVNdXRhdGlvbiB7XHJcbiAgdW5zaGFyZUZpbGU6IHtcclxuICAgIHRwRmlsZToge1xyXG4gICAgICBpZDogSUQ7XHJcbiAgICB9O1xyXG4gIH07XHJcbn1cclxuZXhwb3J0IGNvbnN0IFVuc2hhcmVGaWxlTXV0YXRpb24gPSBncWxUeXBlZDxVbnNoYXJlRmlsZU11dGF0aW9uPmBcclxuICBtdXRhdGlvbiBVbnNoYXJlRmlsZU11dGF0aW9uKCRpbnB1dDogVW5zaGFyZUZpbGVJbnB1dCEpIHtcclxuICAgIHVuc2hhcmVGaWxlKGlucHV0OiAkaW5wdXQpIHtcclxuICAgICAgdHBGaWxlIHtcclxuICAgICAgICBpZFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcEN1cnJlbnRVc2VyU2hhcmVkS2V5UXVlcnkge1xyXG4gIHRwOiB7XHJcbiAgICBjdXJyZW50VXNlclNoYXJlZEtleToge1xyXG4gICAgICB1c2VyU2hhcmVkS2V5OiB7XHJcbiAgICAgICAgc2hhcmVkS2V5OiB7XHJcbiAgICAgICAgICBpZDogSUQ7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBta1NoYXJlZEtleToge1xyXG4gICAgICAgICAgaWQ6IElEO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgbWtQeGs6IHtcclxuICAgICAgICAgIGlkOiBJRDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIG1rUmVzaGFyZVJlcXVlc3RDaXBoZXI6IHN0cmluZztcclxuICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0U2VudDogYm9vbGVhbjtcclxuICAgICAgICBta1Jlc2hhcmVSZXNwb25zZUNpcGhlcjogc3RyaW5nO1xyXG4gICAgICAgIG1rUmVzaGFyZVJlc3BvbnNlU2VudDogYm9vbGVhbjtcclxuICAgICAgfTtcclxuICAgIH07XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5ID0gZ3FsVHlwZWQ8VHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5PmBcclxucXVlcnkgVHBDdXJyZW50VXNlclNoYXJlZEtleVF1ZXJ5KCRpZDogTHJSZWxheUlkSW5wdXQhKSB7XHJcbiAgdHAoaWQ6ICRpZCl7XHJcbiAgICBjdXJyZW50VXNlclNoYXJlZEtleSB7XHJcbiAgICAgIHVzZXJTaGFyZWRLZXkge1xyXG4gICAgICAgIHNoYXJlZEtleSB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBta1NoYXJlZEtleSB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBta1B4ayB7XHJcbiAgICAgICAgICBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBta1Jlc2hhcmVSZXF1ZXN0Q2lwaGVyXHJcbiAgICAgICAgbWtSZXNoYXJlUmVxdWVzdFNlbnRcclxuICAgICAgICBta1Jlc2hhcmVSZXNwb25zZUNpcGhlclxyXG4gICAgICAgIG1rUmVzaGFyZVJlc3BvbnNlU2VudFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbmA7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RUcE1rUmVzaGFyZU11dGF0aW9uIHtcclxuICByZXF1ZXN0VHBNa1Jlc2hhcmU6IHtcclxuICAgIGlkOiBJRDtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBSZXF1ZXN0VHBNa1Jlc2hhcmVNdXRhdGlvbiA9IGdxbFR5cGVkPFJlcXVlc3RUcE1rUmVzaGFyZU11dGF0aW9uPmBcclxubXV0YXRpb24gUmVxdWVzdFRwTWtSZXNoYXJlTXV0YXRpb24oJGlucHV0OiBSZXF1ZXN0VHBNa1Jlc2hhcmVJbnB1dCEpIHtcclxuICByZXF1ZXN0VHBNa1Jlc2hhcmUoaW5wdXQ6ICRpbnB1dCkge1xyXG4gICAgaWRcclxuICB9XHJcbn1gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbiB7XHJcbiAgcmVzcG9uZFRwTWtSZXNoYXJlOiB7XHJcbiAgICBpZDogSUQ7XHJcbiAgfTtcclxufVxyXG5leHBvcnQgY29uc3QgUmVzcG9uZFRwTWtSZXNoYXJlTXV0YXRpb24gPSBncWxUeXBlZDxSZXNwb25kVHBNa1Jlc2hhcmVNdXRhdGlvbj5gXHJcbiAgbXV0YXRpb24gUmVzcG9uZFRwTWtSZXNoYXJlTXV0YXRpb24oJGlucHV0OiBSZXNwb25kVHBNa1Jlc2hhcmVJbnB1dCEpIHtcclxuICAgIHJlc3BvbmRUcE1rUmVzaGFyZShpbnB1dDogJGlucHV0KSB7XHJcbiAgICAgIGlkXHJcbiAgICB9XHJcbiAgfVxyXG5gO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24ge1xyXG4gIGNvbXBsZXRlVHBNa1Jlc2hhcmU6IHtcclxuICAgIGlkOiBJRDtcclxuICB9O1xyXG59XHJcbmV4cG9ydCBjb25zdCBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24gPSBncWxUeXBlZDxDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24+YFxyXG5tdXRhdGlvbiBDb21wbGV0ZVRwTWtSZXNoYXJlTXV0YXRpb24oJGlucHV0OiBDb21wbGV0ZVRwTWtSZXNoYXJlSW5wdXQhKSB7XHJcbiAgY29tcGxldGVUcE1rUmVzaGFyZShpbnB1dDogJGlucHV0KSB7XHJcbiAgICBpZFxyXG4gIH1cclxufWA7XHJcbiJdfQ==