@vendasta/conversation 0.97.2 → 0.99.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/_internal/enums/api.enum.mjs +7 -1
- package/esm2022/lib/_internal/enums/index.mjs +2 -2
- package/esm2022/lib/_internal/interfaces/api.interface.mjs +1 -1
- package/esm2022/lib/_internal/interfaces/conversation.interface.mjs +1 -1
- package/esm2022/lib/_internal/objects/api.mjs +16 -2
- package/esm2022/lib/_internal/objects/conversation.mjs +9 -2
- package/fesm2022/vendasta-conversation.mjs +28 -1
- package/fesm2022/vendasta-conversation.mjs.map +1 -1
- package/lib/_internal/enums/api.enum.d.ts +5 -0
- package/lib/_internal/enums/index.d.ts +1 -1
- package/lib/_internal/interfaces/api.interface.d.ts +3 -1
- package/lib/_internal/interfaces/conversation.interface.d.ts +2 -1
- package/lib/_internal/objects/api.d.ts +3 -1
- package/lib/_internal/objects/conversation.d.ts +2 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SubjectParticipant } from './common';
|
|
1
|
+
import { SubjectParticipant, KeyValuePair } from './common';
|
|
2
2
|
import * as e from '../enums';
|
|
3
3
|
export function enumStringToValue(enumRef, value) {
|
|
4
4
|
if (typeof value === 'number') {
|
|
@@ -54,6 +54,7 @@ export class Conversation {
|
|
|
54
54
|
latestMsgSentTimeBySubjectParticipant;
|
|
55
55
|
subjectParticipantKey;
|
|
56
56
|
latestRelevantActivityTime;
|
|
57
|
+
metadata;
|
|
57
58
|
static fromProto(proto) {
|
|
58
59
|
let m = new Conversation();
|
|
59
60
|
m = Object.assign(m, proto);
|
|
@@ -93,6 +94,9 @@ export class Conversation {
|
|
|
93
94
|
if (proto.latestRelevantActivityTime) {
|
|
94
95
|
m.latestRelevantActivityTime = new Date(proto.latestRelevantActivityTime);
|
|
95
96
|
}
|
|
97
|
+
if (proto.metadata) {
|
|
98
|
+
m.metadata = proto.metadata.map(KeyValuePair.fromProto);
|
|
99
|
+
}
|
|
96
100
|
return m;
|
|
97
101
|
}
|
|
98
102
|
constructor(kwargs) {
|
|
@@ -160,6 +164,9 @@ export class Conversation {
|
|
|
160
164
|
if (typeof this.latestRelevantActivityTime !== 'undefined' && this.latestRelevantActivityTime !== null) {
|
|
161
165
|
toReturn['latestRelevantActivityTime'] = 'toApiJson' in this.latestRelevantActivityTime ? this.latestRelevantActivityTime.toApiJson() : this.latestRelevantActivityTime;
|
|
162
166
|
}
|
|
167
|
+
if (typeof this.metadata !== 'undefined' && this.metadata !== null) {
|
|
168
|
+
toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;
|
|
169
|
+
}
|
|
163
170
|
return toReturn;
|
|
164
171
|
}
|
|
165
172
|
}
|
|
@@ -285,4 +292,4 @@ export class SubjectParticipantKey {
|
|
|
285
292
|
return toReturn;
|
|
286
293
|
}
|
|
287
294
|
}
|
|
288
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29udmVyc2F0aW9uX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2NvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEIsQ0FBQztBQUVELE1BQU0sT0FBTyxlQUFlO0lBQ3hCLGlCQUFpQixDQUFVO0lBQzNCLGFBQWEsQ0FBTztJQUVwQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUM5QixDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7WUFBQSxDQUFDLENBQUMsYUFBYSxHQUFHLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUFBLENBQUM7UUFDM0UsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUFtQztRQUMzQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDVixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxD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QUMsQ0FBRSxJQUFJLENBQUMsbUJBQTJCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUFBLENBQUM7UUFDalAsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgU3ViamVjdFBhcnRpY2lwYW50IH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQUlDb25maWd1cmF0aW9uIGltcGxlbWVudHMgaS5BSUNvbmZpZ3VyYXRpb25JbnRlcmZhY2Uge1xuICAgIGFpUmVzcG9uc2VFbmFibGVkOiBib29sZWFuO1xuICAgIHdpbGxSZXNwb25kQXQ6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBSUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBBSUNvbmZpZ3VyYXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ud2lsbFJlc3BvbmRBdCkge20ud2lsbFJlc3BvbmRBdCA9IG5ldyBEYXRlKHByb3RvLndpbGxSZXNwb25kQXQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5BSUNvbmZpZ3VyYXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5haVJlc3BvbnNlRW5hYmxlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYWlSZXNwb25zZUVuYWJsZWQnXSA9IHRoaXMuYWlSZXNwb25zZUVuYWJsZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMud2lsbFJlc3BvbmRBdCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy53aWxsUmVzcG9uZEF0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3dpbGxSZXNwb25kQXQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMud2lsbFJlc3BvbmRBdCA/ICh0aGlzLndpbGxSZXNwb25kQXQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMud2lsbFJlc3BvbmRBdDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb252ZXJzYXRpb24gaW1wbGVtZW50cyBpLkNvbnZlcnNhdGlvbkludGVyZmFjZSB7XG4gICAgY29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgICBjaGFubmVsOiBlLkNvbnZlcnNhdGlvbkNoYW5uZWw7XG4gICAgZXh0ZXJuYWxDb252ZXJzYXRpb25JZDogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgdXBkYXRlZDogRGF0ZTtcbiAgICBkZWxldGVkOiBEYXRlO1xuICAgIHBhcnRpY2lwYW50SWRzOiBzdHJpbmdbXTtcbiAgICBsYXRlc3RNc2dTZW50VGltZTogRGF0ZTtcbiAgICBvcmlnaW5Mb2NhdGlvbjogZS5QbGF0Zm9ybUxvY2F0aW9uO1xuICAgIG9yaWdpbkxvY2F0aW9uRXh0ZXJuYWxJZDogc3RyaW5nO1xuICAgIGxhc3RTZWVuQnlQYXJ0aWNpcGFudDogTGFzdFNlZW5CeVBhcnRpY2lwYW50W107XG4gICAgY29udmVyc2F0aW9uVmlld0lkczogc3RyaW5nW107XG4gICAgc3ViamVjdFBhcnRpY2lwYW50c0tleTogc3RyaW5nO1xuICAgIHN1YmplY3RQYXJ0aWNpcGFudHM6IFN1YmplY3RQYXJ0aWNpcGFudFtdO1xuICAgIGlzT3BlbjogYm9vbGVhbjtcbiAgICBhaUNvbmZpZ3VyYXRpb246IEFJQ29uZmlndXJhdGlvbjtcbiAgICBsYXRlc3RNc2dTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50OiBMYXRlc3RNZXNzYWdlU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudFtdO1xuICAgIHN1YmplY3RQYXJ0aWNpcGFudEtleTogU3ViamVjdFBhcnRpY2lwYW50S2V5O1xuICAgIGxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ29udmVyc2F0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ29udmVyc2F0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNoYW5uZWwpIHttLmNoYW5uZWwgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkNvbnZlcnNhdGlvbkNoYW5uZWw+KGUuQ29udmVyc2F0aW9uQ2hhbm5lbCwgcHJvdG8uY2hhbm5lbCk7fVxuICAgICAgICBpZiAocHJvdG8uY3JlYXRlZCkge20uY3JlYXRlZCA9IG5ldyBEYXRlKHByb3RvLmNyZWF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLnVwZGF0ZWQpIHttLnVwZGF0ZWQgPSBuZXcgRGF0ZShwcm90by51cGRhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by5kZWxldGVkKSB7bS5kZWxldGVkID0gbmV3IERhdGUocHJvdG8uZGVsZXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8ubGF0ZXN0TXNnU2VudFRpbWUpIHttLmxhdGVzdE1zZ1NlbnRUaW1lID0gbmV3IERhdGUocHJvdG8ubGF0ZXN0TXNnU2VudFRpbWUpO31cbiAgICAgICAgaWYgKHByb3RvLm9yaWdpbkxvY2F0aW9uKSB7bS5vcmlnaW5Mb2NhdGlvbiA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUGxhdGZvcm1Mb2NhdGlvbj4oZS5QbGF0Zm9ybUxvY2F0aW9uLCBwcm90by5vcmlnaW5Mb2NhdGlvbik7fVxuICAgICAgICBpZiAocHJvdG8ubGFzdFNlZW5CeVBhcnRpY2lwYW50KSB7bS5sYXN0U2VlbkJ5UGFydGljaXBhbnQgPSBwcm90by5sYXN0U2VlbkJ5UGFydGljaXBhbnQubWFwKExhc3RTZWVuQnlQYXJ0aWNpcGFudC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnN1YmplY3RQYXJ0aWNpcGFudHMpIHttLnN1YmplY3RQYXJ0aWNpcGFudHMgPSBwcm90by5zdWJqZWN0UGFydGljaXBhbnRzLm1hcChTdWJqZWN0UGFydGljaXBhbnQuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5haUNvbmZpZ3VyYXRpb24pIHttLmFpQ29uZmlndXJhdGlvbiA9IEFJQ29uZmlndXJhdGlvbi5mcm9tUHJvdG8ocHJvdG8uYWlDb25maWd1cmF0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5sYXRlc3RNc2dTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50KSB7bS5sYXRlc3RNc2dTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50ID0gcHJvdG8ubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudC5tYXAoTGF0ZXN0TWVzc2FnZVNlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5zdWJqZWN0UGFydGljaXBhbnRLZXkpIHttLnN1YmplY3RQYXJ0aWNpcGFudEtleSA9IFN1YmplY3RQYXJ0aWNpcGFudEtleS5mcm9tUHJvdG8ocHJvdG8uc3ViamVjdFBhcnRpY2lwYW50S2V5KTt9XG4gICAgICAgIGlmIChwcm90by5sYXRlc3RSZWxldmFudEFjdGl2aXR5VGltZSkge20ubGF0ZXN0UmVsZXZhbnRBY3Rpdml0eVRpbWUgPSBuZXcgRGF0ZShwcm90by5sYXRlc3RSZWxldmFudEFjdGl2aXR5VGltZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNvbnZlcnNhdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnZlcnNhdGlvbklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGFubmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjaGFubmVsJ10gPSB0aGlzLmNoYW5uZWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXh0ZXJuYWxDb252ZXJzYXRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXh0ZXJuYWxDb252ZXJzYXRpb25JZCddID0gdGhpcy5leHRlcm5hbENvbnZlcnNhdGlvbklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlbGV0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnZGVsZXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kZWxldGVkID8gKHRoaXMuZGVsZXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kZWxldGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRpY2lwYW50SWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0aWNpcGFudElkcyddID0gdGhpcy5wYXJ0aWNpcGFudElkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXRlc3RNc2dTZW50VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5sYXRlc3RNc2dTZW50VGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydsYXRlc3RNc2dTZW50VGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5sYXRlc3RNc2dTZW50VGltZSA/ICh0aGlzLmxhdGVzdE1zZ1NlbnRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxhdGVzdE1zZ1NlbnRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbkxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5Mb2NhdGlvbiddID0gdGhpcy5vcmlnaW5Mb2NhdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbkxvY2F0aW9uRXh0ZXJuYWxJZCddID0gdGhpcy5vcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdFNlZW5CeVBhcnRpY2lwYW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxhc3RTZWVuQnlQYXJ0aWNpcGFudCAhPT0gbnVsbCkge3RvUmV0dXJuWydsYXN0U2VlbkJ5UGFydGljaXBhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGFzdFNlZW5CeVBhcnRpY2lwYW50ID8gKHRoaXMubGFzdFNlZW5CeVBhcnRpY2lwYW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxhc3RTZWVuQnlQYXJ0aWNpcGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb252ZXJzYXRpb25WaWV3SWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb252ZXJzYXRpb25WaWV3SWRzJ10gPSB0aGlzLmNvbnZlcnNhdGlvblZpZXdJZHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50c0tleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3ViamVjdFBhcnRpY2lwYW50c0tleSddID0gdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzS2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJqZWN0UGFydGljaXBhbnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgPyAodGhpcy5zdWJqZWN0UGFydGljaXBhbnRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNPcGVuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpc09wZW4nXSA9IHRoaXMuaXNPcGVuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFpQ29uZmlndXJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5haUNvbmZpZ3VyYXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnYWlDb25maWd1cmF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFpQ29uZmlndXJhdGlvbiA/ICh0aGlzLmFpQ29uZmlndXJhdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5haUNvbmZpZ3VyYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5sYXRlc3RNc2dTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xhdGVzdE1zZ1NlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCA/ICh0aGlzLmxhdGVzdE1zZ1NlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRLZXkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50S2V5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3RQYXJ0aWNpcGFudEtleSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdWJqZWN0UGFydGljaXBhbnRLZXkgPyAodGhpcy5zdWJqZWN0UGFydGljaXBhbnRLZXkgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdFBhcnRpY2lwYW50S2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lID8gKHRoaXMubGF0ZXN0UmVsZXZhbnRBY3Rpdml0eVRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGF0ZXN0UmVsZXZhbnRBY3Rpdml0eVRpbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uS2V5IGltcGxlbWVudHMgaS5Db252ZXJzYXRpb25LZXlJbnRlcmZhY2Uge1xuICAgIHN1YmplY3RQYXJ0aWNpcGFudHM6IFN1YmplY3RQYXJ0aWNpcGFudFtdO1xuICAgIGNoYW5uZWw6IGUuQ29udmVyc2F0aW9uQ2hhbm5lbDtcbiAgICBvcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IENvbnZlcnNhdGlvbktleSB7XG4gICAgICAgIGxldCBtID0gbmV3IENvbnZlcnNhdGlvbktleSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdWJqZWN0UGFydGljaXBhbnRzKSB7bS5zdWJqZWN0UGFydGljaXBhbnRzID0gcHJvdG8uc3ViamVjdFBhcnRpY2lwYW50cy5tYXAoU3ViamVjdFBhcnRpY2lwYW50LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uY2hhbm5lbCkge20uY2hhbm5lbCA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ29udmVyc2F0aW9uQ2hhbm5lbD4oZS5Db252ZXJzYXRpb25DaGFubmVsLCBwcm90by5jaGFubmVsKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ29udmVyc2F0aW9uS2V5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3RQYXJ0aWNpcGFudHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyA/ICh0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdFBhcnRpY2lwYW50czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGFubmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjaGFubmVsJ10gPSB0aGlzLmNoYW5uZWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luTG9jYXRpb25FeHRlcm5hbElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQnXSA9IHRoaXMub3JpZ2luTG9jYXRpb25FeHRlcm5hbElkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExhc3RTZWVuQnlQYXJ0aWNpcGFudCBpbXBsZW1lbnRzIGkuTGFzdFNlZW5CeVBhcnRpY2lwYW50SW50ZXJmYWNlIHtcbiAgICBwYXJ0aWNpcGFudElkOiBzdHJpbmc7XG4gICAgbGFzdFNlZW5UaW1lOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGFzdFNlZW5CeVBhcnRpY2lwYW50IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGFzdFNlZW5CeVBhcnRpY2lwYW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmxhc3RTZWVuVGltZSkge20ubGFzdFNlZW5UaW1lID0gbmV3IERhdGUocHJvdG8ubGFzdFNlZW5UaW1lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGFzdFNlZW5CeVBhcnRpY2lwYW50SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydGljaXBhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGFydGljaXBhbnRJZCddID0gdGhpcy5wYXJ0aWNpcGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhc3RTZWVuVGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5sYXN0U2VlblRpbWUgIT09IG51bGwpIHt0b1JldHVyblsnbGFzdFNlZW5UaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxhc3RTZWVuVGltZSA/ICh0aGlzLmxhc3RTZWVuVGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5sYXN0U2VlblRpbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGF0ZXN0TWVzc2FnZVNlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQgaW1wbGVtZW50cyBpLkxhdGVzdE1lc3NhZ2VTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50SW50ZXJmYWNlIHtcbiAgICBzdWJqZWN0UGFydGljaXBhbnQ6IFN1YmplY3RQYXJ0aWNpcGFudDtcbiAgICB0aW1lOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGF0ZXN0TWVzc2FnZVNlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQge1xuICAgICAgICBsZXQgbSA9IG5ldyBMYXRlc3RNZXNzYWdlU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdWJqZWN0UGFydGljaXBhbnQpIHttLnN1YmplY3RQYXJ0aWNpcGFudCA9IFN1YmplY3RQYXJ0aWNpcGFudC5mcm9tUHJvdG8ocHJvdG8uc3ViamVjdFBhcnRpY2lwYW50KTt9XG4gICAgICAgIGlmIChwcm90by50aW1lKSB7bS50aW1lID0gbmV3IERhdGUocHJvdG8udGltZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxhdGVzdE1lc3NhZ2VTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudCAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJqZWN0UGFydGljaXBhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50ID8gKHRoaXMuc3ViamVjdFBhcnRpY2lwYW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRpbWUgIT09IG51bGwpIHt0b1JldHVyblsndGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aW1lID8gKHRoaXMudGltZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50aW1lO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN1YmplY3RQYXJ0aWNpcGFudEtleSBpbXBsZW1lbnRzIGkuU3ViamVjdFBhcnRpY2lwYW50S2V5SW50ZXJmYWNlIHtcbiAgICBzdWJqZWN0UGFydGljaXBhbnRzS2V5OiBzdHJpbmc7XG4gICAgc3ViamVjdFBhcnRpY2lwYW50czogU3ViamVjdFBhcnRpY2lwYW50W107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTdWJqZWN0UGFydGljaXBhbnRLZXkge1xuICAgICAgICBsZXQgbSA9IG5ldyBTdWJqZWN0UGFydGljaXBhbnRLZXkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3ViamVjdFBhcnRpY2lwYW50cykge20uc3ViamVjdFBhcnRpY2lwYW50cyA9IHByb3RvLnN1YmplY3RQYXJ0aWNpcGFudHMubWFwKFN1YmplY3RQYXJ0aWNpcGFudC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TdWJqZWN0UGFydGljaXBhbnRLZXlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzS2V5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdWJqZWN0UGFydGljaXBhbnRzS2V5J10gPSB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHNLZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3RQYXJ0aWNpcGFudHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyA/ICh0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdFBhcnRpY2lwYW50czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVyc2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vY29udmVyc2F0aW9uX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2NvbnZlcnNhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzVELE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVSxDQUFDO0FBRTlCLE1BQU0sVUFBVSxpQkFBaUIsQ0FBSSxPQUFZLEVBQUUsS0FBYTtJQUM5RCxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sZUFBZTtJQUN4QixpQkFBaUIsQ0FBVTtJQUMzQixhQUFhLENBQU87SUFFcEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDOUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQUEsQ0FBQyxDQUFDLGFBQWEsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7UUFBQSxDQUFDO1FBQzNFLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBbUM7UUFDM0MsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNYLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxH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TztRQUNYLENBQUM7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsc0JBQXNCLEtBQUssV0FBVyxFQUFFLENBQUM7WUFBQSxRQUFRLENBQUMsd0JBQXdCLENBQUMsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7UUFBQSxDQUFDO1FBQzNILElBQUksT0FBTyxJQUFJLENBQUMsbUJBQW1CLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUFBLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxtQkFBMkIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO1FBQUEsQ0FBQztRQUNqUCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBTdWJqZWN0UGFydGljaXBhbnQsIEtleVZhbHVlUGFpciB9IGZyb20gJy4vY29tbW9uJztcbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEFJQ29uZmlndXJhdGlvbiBpbXBsZW1lbnRzIGkuQUlDb25maWd1cmF0aW9uSW50ZXJmYWNlIHtcbiAgICBhaVJlc3BvbnNlRW5hYmxlZDogYm9vbGVhbjtcbiAgICB3aWxsUmVzcG9uZEF0OiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQUlDb25maWd1cmF0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQUlDb25maWd1cmF0aW9uKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLndpbGxSZXNwb25kQXQpIHttLndpbGxSZXNwb25kQXQgPSBuZXcgRGF0ZShwcm90by53aWxsUmVzcG9uZEF0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQUlDb25maWd1cmF0aW9uSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWlSZXNwb25zZUVuYWJsZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FpUmVzcG9uc2VFbmFibGVkJ10gPSB0aGlzLmFpUmVzcG9uc2VFbmFibGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndpbGxSZXNwb25kQXQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMud2lsbFJlc3BvbmRBdCAhPT0gbnVsbCkge3RvUmV0dXJuWyd3aWxsUmVzcG9uZEF0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLndpbGxSZXNwb25kQXQgPyAodGhpcy53aWxsUmVzcG9uZEF0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLndpbGxSZXNwb25kQXQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQ29udmVyc2F0aW9uIGltcGxlbWVudHMgaS5Db252ZXJzYXRpb25JbnRlcmZhY2Uge1xuICAgIGNvbnZlcnNhdGlvbklkOiBzdHJpbmc7XG4gICAgY2hhbm5lbDogZS5Db252ZXJzYXRpb25DaGFubmVsO1xuICAgIGV4dGVybmFsQ29udmVyc2F0aW9uSWQ6IHN0cmluZztcbiAgICBjcmVhdGVkOiBEYXRlO1xuICAgIHVwZGF0ZWQ6IERhdGU7XG4gICAgZGVsZXRlZDogRGF0ZTtcbiAgICBwYXJ0aWNpcGFudElkczogc3RyaW5nW107XG4gICAgbGF0ZXN0TXNnU2VudFRpbWU6IERhdGU7XG4gICAgb3JpZ2luTG9jYXRpb246IGUuUGxhdGZvcm1Mb2NhdGlvbjtcbiAgICBvcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQ6IHN0cmluZztcbiAgICBsYXN0U2VlbkJ5UGFydGljaXBhbnQ6IExhc3RTZWVuQnlQYXJ0aWNpcGFudFtdO1xuICAgIGNvbnZlcnNhdGlvblZpZXdJZHM6IHN0cmluZ1tdO1xuICAgIHN1YmplY3RQYXJ0aWNpcGFudHNLZXk6IHN0cmluZztcbiAgICBzdWJqZWN0UGFydGljaXBhbnRzOiBTdWJqZWN0UGFydGljaXBhbnRbXTtcbiAgICBpc09wZW46IGJvb2xlYW47XG4gICAgYWlDb25maWd1cmF0aW9uOiBBSUNvbmZpZ3VyYXRpb247XG4gICAgbGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudDogTGF0ZXN0TWVzc2FnZVNlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnRbXTtcbiAgICBzdWJqZWN0UGFydGljaXBhbnRLZXk6IFN1YmplY3RQYXJ0aWNpcGFudEtleTtcbiAgICBsYXRlc3RSZWxldmFudEFjdGl2aXR5VGltZTogRGF0ZTtcbiAgICBtZXRhZGF0YTogS2V5VmFsdWVQYWlyW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBDb252ZXJzYXRpb24ge1xuICAgICAgICBsZXQgbSA9IG5ldyBDb252ZXJzYXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY2hhbm5lbCkge20uY2hhbm5lbCA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQ29udmVyc2F0aW9uQ2hhbm5lbD4oZS5Db252ZXJzYXRpb25DaGFubmVsLCBwcm90by5jaGFubmVsKTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVkKSB7bS5jcmVhdGVkID0gbmV3IERhdGUocHJvdG8uY3JlYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8udXBkYXRlZCkge20udXBkYXRlZCA9IG5ldyBEYXRlKHByb3RvLnVwZGF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLmRlbGV0ZWQpIHttLmRlbGV0ZWQgPSBuZXcgRGF0ZShwcm90by5kZWxldGVkKTt9XG4gICAgICAgIGlmIChwcm90by5sYXRlc3RNc2dTZW50VGltZSkge20ubGF0ZXN0TXNnU2VudFRpbWUgPSBuZXcgRGF0ZShwcm90by5sYXRlc3RNc2dTZW50VGltZSk7fVxuICAgICAgICBpZiAocHJvdG8ub3JpZ2luTG9jYXRpb24pIHttLm9yaWdpbkxvY2F0aW9uID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5QbGF0Zm9ybUxvY2F0aW9uPihlLlBsYXRmb3JtTG9jYXRpb24sIHByb3RvLm9yaWdpbkxvY2F0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by5sYXN0U2VlbkJ5UGFydGljaXBhbnQpIHttLmxhc3RTZWVuQnlQYXJ0aWNpcGFudCA9IHByb3RvLmxhc3RTZWVuQnlQYXJ0aWNpcGFudC5tYXAoTGFzdFNlZW5CeVBhcnRpY2lwYW50LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uc3ViamVjdFBhcnRpY2lwYW50cykge20uc3ViamVjdFBhcnRpY2lwYW50cyA9IHByb3RvLnN1YmplY3RQYXJ0aWNpcGFudHMubWFwKFN1YmplY3RQYXJ0aWNpcGFudC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmFpQ29uZmlndXJhdGlvbikge20uYWlDb25maWd1cmF0aW9uID0gQUlDb25maWd1cmF0aW9uLmZyb21Qcm90byhwcm90by5haUNvbmZpZ3VyYXRpb24pO31cbiAgICAgICAgaWYgKHByb3RvLmxhdGVzdE1zZ1NlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQpIHttLmxhdGVzdE1zZ1NlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQgPSBwcm90by5sYXRlc3RNc2dTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50Lm1hcChMYXRlc3RNZXNzYWdlU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnN1YmplY3RQYXJ0aWNpcGFudEtleSkge20uc3ViamVjdFBhcnRpY2lwYW50S2V5ID0gU3ViamVjdFBhcnRpY2lwYW50S2V5LmZyb21Qcm90byhwcm90by5zdWJqZWN0UGFydGljaXBhbnRLZXkpO31cbiAgICAgICAgaWYgKHByb3RvLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lKSB7bS5sYXRlc3RSZWxldmFudEFjdGl2aXR5VGltZSA9IG5ldyBEYXRlKHByb3RvLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lKTt9XG4gICAgICAgIGlmIChwcm90by5tZXRhZGF0YSkge20ubWV0YWRhdGEgPSBwcm90by5tZXRhZGF0YS5tYXAoS2V5VmFsdWVQYWlyLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkNvbnZlcnNhdGlvbkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbnZlcnNhdGlvbklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb252ZXJzYXRpb25JZCddID0gdGhpcy5jb252ZXJzYXRpb25JZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGFubmVsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjaGFubmVsJ10gPSB0aGlzLmNoYW5uZWw7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZXh0ZXJuYWxDb252ZXJzYXRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXh0ZXJuYWxDb252ZXJzYXRpb25JZCddID0gdGhpcy5leHRlcm5hbENvbnZlcnNhdGlvbklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlbGV0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnZGVsZXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kZWxldGVkID8gKHRoaXMuZGVsZXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kZWxldGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhcnRpY2lwYW50SWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0aWNpcGFudElkcyddID0gdGhpcy5wYXJ0aWNpcGFudElkczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sYXRlc3RNc2dTZW50VGltZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5sYXRlc3RNc2dTZW50VGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydsYXRlc3RNc2dTZW50VGltZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5sYXRlc3RNc2dTZW50VGltZSA/ICh0aGlzLmxhdGVzdE1zZ1NlbnRUaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxhdGVzdE1zZ1NlbnRUaW1lO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpbkxvY2F0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydvcmlnaW5Mb2NhdGlvbiddID0gdGhpcy5vcmlnaW5Mb2NhdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbkxvY2F0aW9uRXh0ZXJuYWxJZCddID0gdGhpcy5vcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdFNlZW5CeVBhcnRpY2lwYW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxhc3RTZWVuQnlQYXJ0aWNpcGFudCAhPT0gbnVsbCkge3RvUmV0dXJuWydsYXN0U2VlbkJ5UGFydGljaXBhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGFzdFNlZW5CeVBhcnRpY2lwYW50ID8gKHRoaXMubGFzdFNlZW5CeVBhcnRpY2lwYW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxhc3RTZWVuQnlQYXJ0aWNpcGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb252ZXJzYXRpb25WaWV3SWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb252ZXJzYXRpb25WaWV3SWRzJ10gPSB0aGlzLmNvbnZlcnNhdGlvblZpZXdJZHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50c0tleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3ViamVjdFBhcnRpY2lwYW50c0tleSddID0gdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzS2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJqZWN0UGFydGljaXBhbnRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgPyAodGhpcy5zdWJqZWN0UGFydGljaXBhbnRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaXNPcGVuICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpc09wZW4nXSA9IHRoaXMuaXNPcGVuO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFpQ29uZmlndXJhdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5haUNvbmZpZ3VyYXRpb24gIT09IG51bGwpIHt0b1JldHVyblsnYWlDb25maWd1cmF0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFpQ29uZmlndXJhdGlvbiA/ICh0aGlzLmFpQ29uZmlndXJhdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5haUNvbmZpZ3VyYXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5sYXRlc3RNc2dTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xhdGVzdE1zZ1NlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCA/ICh0aGlzLmxhdGVzdE1zZ1NlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGF0ZXN0TXNnU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRLZXkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50S2V5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3RQYXJ0aWNpcGFudEtleSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdWJqZWN0UGFydGljaXBhbnRLZXkgPyAodGhpcy5zdWJqZWN0UGFydGljaXBhbnRLZXkgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdFBhcnRpY2lwYW50S2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lICE9PSBudWxsKSB7dG9SZXR1cm5bJ2xhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmxhdGVzdFJlbGV2YW50QWN0aXZpdHlUaW1lID8gKHRoaXMubGF0ZXN0UmVsZXZhbnRBY3Rpdml0eVRpbWUgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMubGF0ZXN0UmVsZXZhbnRBY3Rpdml0eVRpbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsnbWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubWV0YWRhdGEgPyAodGhpcy5tZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5tZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBDb252ZXJzYXRpb25LZXkgaW1wbGVtZW50cyBpLkNvbnZlcnNhdGlvbktleUludGVyZmFjZSB7XG4gICAgc3ViamVjdFBhcnRpY2lwYW50czogU3ViamVjdFBhcnRpY2lwYW50W107XG4gICAgY2hhbm5lbDogZS5Db252ZXJzYXRpb25DaGFubmVsO1xuICAgIG9yaWdpbkxvY2F0aW9uRXh0ZXJuYWxJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ29udmVyc2F0aW9uS2V5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQ29udmVyc2F0aW9uS2V5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN1YmplY3RQYXJ0aWNpcGFudHMpIHttLnN1YmplY3RQYXJ0aWNpcGFudHMgPSBwcm90by5zdWJqZWN0UGFydGljaXBhbnRzLm1hcChTdWJqZWN0UGFydGljaXBhbnQuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5jaGFubmVsKSB7bS5jaGFubmVsID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Db252ZXJzYXRpb25DaGFubmVsPihlLkNvbnZlcnNhdGlvbkNoYW5uZWwsIHByb3RvLmNoYW5uZWwpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Db252ZXJzYXRpb25LZXlJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgIT09IG51bGwpIHt0b1JldHVyblsnc3ViamVjdFBhcnRpY2lwYW50cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzID8gKHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNoYW5uZWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NoYW5uZWwnXSA9IHRoaXMuY2hhbm5lbDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbkxvY2F0aW9uRXh0ZXJuYWxJZCddID0gdGhpcy5vcmlnaW5Mb2NhdGlvbkV4dGVybmFsSWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGFzdFNlZW5CeVBhcnRpY2lwYW50IGltcGxlbWVudHMgaS5MYXN0U2VlbkJ5UGFydGljaXBhbnRJbnRlcmZhY2Uge1xuICAgIHBhcnRpY2lwYW50SWQ6IHN0cmluZztcbiAgICBsYXN0U2VlblRpbWU6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMYXN0U2VlbkJ5UGFydGljaXBhbnQge1xuICAgICAgICBsZXQgbSA9IG5ldyBMYXN0U2VlbkJ5UGFydGljaXBhbnQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubGFzdFNlZW5UaW1lKSB7bS5sYXN0U2VlblRpbWUgPSBuZXcgRGF0ZShwcm90by5sYXN0U2VlblRpbWUpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MYXN0U2VlbkJ5UGFydGljaXBhbnRJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0aWNpcGFudElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0aWNpcGFudElkJ10gPSB0aGlzLnBhcnRpY2lwYW50SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdFNlZW5UaW1lICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxhc3RTZWVuVGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWydsYXN0U2VlblRpbWUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGFzdFNlZW5UaW1lID8gKHRoaXMubGFzdFNlZW5UaW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxhc3RTZWVuVGltZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMYXRlc3RNZXNzYWdlU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCBpbXBsZW1lbnRzIGkuTGF0ZXN0TWVzc2FnZVNlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnRJbnRlcmZhY2Uge1xuICAgIHN1YmplY3RQYXJ0aWNpcGFudDogU3ViamVjdFBhcnRpY2lwYW50O1xuICAgIHRpbWU6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMYXRlc3RNZXNzYWdlU2VudFRpbWVCeVN1YmplY3RQYXJ0aWNpcGFudCB7XG4gICAgICAgIGxldCBtID0gbmV3IExhdGVzdE1lc3NhZ2VTZW50VGltZUJ5U3ViamVjdFBhcnRpY2lwYW50KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN1YmplY3RQYXJ0aWNpcGFudCkge20uc3ViamVjdFBhcnRpY2lwYW50ID0gU3ViamVjdFBhcnRpY2lwYW50LmZyb21Qcm90byhwcm90by5zdWJqZWN0UGFydGljaXBhbnQpO31cbiAgICAgICAgaWYgKHByb3RvLnRpbWUpIHttLnRpbWUgPSBuZXcgRGF0ZShwcm90by50aW1lKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGF0ZXN0TWVzc2FnZVNlbnRUaW1lQnlTdWJqZWN0UGFydGljaXBhbnRJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0UGFydGljaXBhbnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdFBhcnRpY2lwYW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N1YmplY3RQYXJ0aWNpcGFudCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdWJqZWN0UGFydGljaXBhbnQgPyAodGhpcy5zdWJqZWN0UGFydGljaXBhbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3ViamVjdFBhcnRpY2lwYW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRpbWUgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGltZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd0aW1lJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRpbWUgPyAodGhpcy50aW1lIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRpbWU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3ViamVjdFBhcnRpY2lwYW50S2V5IGltcGxlbWVudHMgaS5TdWJqZWN0UGFydGljaXBhbnRLZXlJbnRlcmZhY2Uge1xuICAgIHN1YmplY3RQYXJ0aWNpcGFudHNLZXk6IHN0cmluZztcbiAgICBzdWJqZWN0UGFydGljaXBhbnRzOiBTdWJqZWN0UGFydGljaXBhbnRbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFN1YmplY3RQYXJ0aWNpcGFudEtleSB7XG4gICAgICAgIGxldCBtID0gbmV3IFN1YmplY3RQYXJ0aWNpcGFudEtleSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5zdWJqZWN0UGFydGljaXBhbnRzKSB7bS5zdWJqZWN0UGFydGljaXBhbnRzID0gcHJvdG8uc3ViamVjdFBhcnRpY2lwYW50cy5tYXAoU3ViamVjdFBhcnRpY2lwYW50LmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlN1YmplY3RQYXJ0aWNpcGFudEtleUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHNLZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1YmplY3RQYXJ0aWNpcGFudHNLZXknXSA9IHRoaXMuc3ViamVjdFBhcnRpY2lwYW50c0tleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnN1YmplY3RQYXJ0aWNpcGFudHMgIT09IG51bGwpIHt0b1JldHVyblsnc3ViamVjdFBhcnRpY2lwYW50cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzID8gKHRoaXMuc3ViamVjdFBhcnRpY2lwYW50cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zdWJqZWN0UGFydGljaXBhbnRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|
|
@@ -174,6 +174,12 @@ var GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType;
|
|
|
174
174
|
GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType[GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType["ENTITY_TYPE_ACCOUNT_GROUP"] = 2] = "ENTITY_TYPE_ACCOUNT_GROUP";
|
|
175
175
|
GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType[GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType["ENTITY_TYPE_CONTACT"] = 3] = "ENTITY_TYPE_CONTACT";
|
|
176
176
|
})(GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType || (GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType = {}));
|
|
177
|
+
var EvaluateResponseType;
|
|
178
|
+
(function (EvaluateResponseType) {
|
|
179
|
+
EvaluateResponseType[EvaluateResponseType["EVALUATION_RESPONSE_TYPE_UNSPECIFIED"] = 0] = "EVALUATION_RESPONSE_TYPE_UNSPECIFIED";
|
|
180
|
+
EvaluateResponseType[EvaluateResponseType["EVALUATION_RESPONSE_TYPE_EVENT"] = 1] = "EVALUATION_RESPONSE_TYPE_EVENT";
|
|
181
|
+
EvaluateResponseType[EvaluateResponseType["EVALUATION_RESPONSE_TYPE_MESSAGE"] = 2] = "EVALUATION_RESPONSE_TYPE_MESSAGE";
|
|
182
|
+
})(EvaluateResponseType || (EvaluateResponseType = {}));
|
|
177
183
|
var MetadataIdentifier;
|
|
178
184
|
(function (MetadataIdentifier) {
|
|
179
185
|
MetadataIdentifier[MetadataIdentifier["METADATA_IDENTIFIER_UNDEFINED"] = 0] = "METADATA_IDENTIFIER_UNDEFINED";
|
|
@@ -344,6 +350,7 @@ class Conversation {
|
|
|
344
350
|
latestMsgSentTimeBySubjectParticipant;
|
|
345
351
|
subjectParticipantKey;
|
|
346
352
|
latestRelevantActivityTime;
|
|
353
|
+
metadata;
|
|
347
354
|
static fromProto(proto) {
|
|
348
355
|
let m = new Conversation();
|
|
349
356
|
m = Object.assign(m, proto);
|
|
@@ -383,6 +390,9 @@ class Conversation {
|
|
|
383
390
|
if (proto.latestRelevantActivityTime) {
|
|
384
391
|
m.latestRelevantActivityTime = new Date(proto.latestRelevantActivityTime);
|
|
385
392
|
}
|
|
393
|
+
if (proto.metadata) {
|
|
394
|
+
m.metadata = proto.metadata.map(KeyValuePair.fromProto);
|
|
395
|
+
}
|
|
386
396
|
return m;
|
|
387
397
|
}
|
|
388
398
|
constructor(kwargs) {
|
|
@@ -450,6 +460,9 @@ class Conversation {
|
|
|
450
460
|
if (typeof this.latestRelevantActivityTime !== 'undefined' && this.latestRelevantActivityTime !== null) {
|
|
451
461
|
toReturn['latestRelevantActivityTime'] = 'toApiJson' in this.latestRelevantActivityTime ? this.latestRelevantActivityTime.toApiJson() : this.latestRelevantActivityTime;
|
|
452
462
|
}
|
|
463
|
+
if (typeof this.metadata !== 'undefined' && this.metadata !== null) {
|
|
464
|
+
toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;
|
|
465
|
+
}
|
|
453
466
|
return toReturn;
|
|
454
467
|
}
|
|
455
468
|
}
|
|
@@ -2203,9 +2216,13 @@ class CreateWidgetConversationRequest {
|
|
|
2203
2216
|
widgetId;
|
|
2204
2217
|
chatSourceUrl;
|
|
2205
2218
|
greetingMessage;
|
|
2219
|
+
metadata;
|
|
2206
2220
|
static fromProto(proto) {
|
|
2207
2221
|
let m = new CreateWidgetConversationRequest();
|
|
2208
2222
|
m = Object.assign(m, proto);
|
|
2223
|
+
if (proto.metadata) {
|
|
2224
|
+
m.metadata = proto.metadata.map(KeyValuePair.fromProto);
|
|
2225
|
+
}
|
|
2209
2226
|
return m;
|
|
2210
2227
|
}
|
|
2211
2228
|
constructor(kwargs) {
|
|
@@ -2225,6 +2242,9 @@ class CreateWidgetConversationRequest {
|
|
|
2225
2242
|
if (typeof this.greetingMessage !== 'undefined') {
|
|
2226
2243
|
toReturn['greetingMessage'] = this.greetingMessage;
|
|
2227
2244
|
}
|
|
2245
|
+
if (typeof this.metadata !== 'undefined' && this.metadata !== null) {
|
|
2246
|
+
toReturn['metadata'] = 'toApiJson' in this.metadata ? this.metadata.toApiJson() : this.metadata;
|
|
2247
|
+
}
|
|
2228
2248
|
return toReturn;
|
|
2229
2249
|
}
|
|
2230
2250
|
}
|
|
@@ -3963,6 +3983,7 @@ class ListResponseEvaluationsRequest {
|
|
|
3963
3983
|
pagingOptions;
|
|
3964
3984
|
createdAfter;
|
|
3965
3985
|
createdBefore;
|
|
3986
|
+
evaluationType;
|
|
3966
3987
|
static fromProto(proto) {
|
|
3967
3988
|
let m = new ListResponseEvaluationsRequest();
|
|
3968
3989
|
m = Object.assign(m, proto);
|
|
@@ -3978,6 +3999,9 @@ class ListResponseEvaluationsRequest {
|
|
|
3978
3999
|
if (proto.createdBefore) {
|
|
3979
4000
|
m.createdBefore = new Date(proto.createdBefore);
|
|
3980
4001
|
}
|
|
4002
|
+
if (proto.evaluationType) {
|
|
4003
|
+
m.evaluationType = proto.evaluationType.map((v) => enumStringToValue(EvaluateResponseType, v));
|
|
4004
|
+
}
|
|
3981
4005
|
return m;
|
|
3982
4006
|
}
|
|
3983
4007
|
constructor(kwargs) {
|
|
@@ -4003,6 +4027,9 @@ class ListResponseEvaluationsRequest {
|
|
|
4003
4027
|
if (typeof this.createdBefore !== 'undefined' && this.createdBefore !== null) {
|
|
4004
4028
|
toReturn['createdBefore'] = 'toApiJson' in this.createdBefore ? this.createdBefore.toApiJson() : this.createdBefore;
|
|
4005
4029
|
}
|
|
4030
|
+
if (typeof this.evaluationType !== 'undefined') {
|
|
4031
|
+
toReturn['evaluationType'] = this.evaluationType;
|
|
4032
|
+
}
|
|
4006
4033
|
return toReturn;
|
|
4007
4034
|
}
|
|
4008
4035
|
}
|
|
@@ -5800,5 +5827,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
5800
5827
|
* Generated bundle index. Do not edit.
|
|
5801
5828
|
*/
|
|
5802
5829
|
|
|
5803
|
-
export { AIConfiguration, AISystemMessage, AISystemMessageApiService, Access, AddConversationToConversationViewRequest, AddMultiParticipantsRequest, AddMultiParticipantsResponse, Address, CapturedLead, ChannelAvailability, ChannelStatus, Configuration, ConfigurationAIConfiguration, Conversation, ConversationApiService, ConversationChannel, ConversationKey, ConversationMessageCount, CreateConversationRequest, CreateConversationResponse, CreateMessageTemplateRequest, CreateMessageTemplateResponse, CreateMultiMessagesRequest, CreateWidgetConversationRequest, CreateWidgetConversationResponse, CreateWidgetRequest, CreateWidgetResponse, DataSources, DeleteConversationRequest, DeleteMessageRequest, DeleteMessageTemplateRequest, DeleteWidgetRequest, EmailApiService, EvaluateResponseRequest, EvaluationSentiment, Event, EventType, FieldMask, GetAISystemMessageRequest, GetAISystemMessageResponse, GetAvailableChannelsForConversationRequest, GetAvailableChannelsForConversationResponse, GetConfigurationRequest, GetConfigurationResponse, GetConversationByKeyRequest, GetConversationByKeyResponse, GetConversationSummaryRequest, GetConversationSummaryResponse, GetConversationViewsRequest, GetConversationViewsResponse, GetMessageOptions, GetMessageRequest, GetMessageTemplateRequest, GetMessageTemplateRequestHydrationOptions, GetMessageTemplateRequestHydrationOptionsHydrationEntity, GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType, GetMessageTemplateResponse, GetMessageTemplateResponseHydrationInformation, GetMultiConfigurationRequest, GetMultiConfigurationResponse, GetMultiConversationDetailsRequest, GetMultiConversationDetailsResponse, GetMultiConversationDetailsResponseDetailedConversation, GetMultiConversationMessageCountRequest, GetMultiConversationMessageCountResponse, GetMultiConversationMessageCountResponseCountsEntry, GetMultiEventsRequest, GetMultiEventsResponse, GetMultiMessagesRequest, GetMultiMessagesResponse, GetMultiParticipantsRequest, GetMultiParticipantsResponse, GetMultiWidgetMessagesRequest, GetMultiWidgetMessagesResponse, GetMultiWidgetRequest, GetMultiWidgetResponse, GetOwnerEmailRequest, GetOwnerEmailResponse, GetParticipantsByKeyRequest, GetParticipantsByKeyResponse, GetWidgetConfigRequest, GetWidgetConfigResponse, GetWidgetConversationResponse, GetWidgetRequest, GetWidgetResponse, GlobalParticipantType, InboxApiService, InjectMessageRequest, InjectMessageRequestMetadataEntry, KeyValuePair, LastSeenByParticipant, LatestMessageSentTimeBySubjectParticipant, ListAISystemMessagesRequest, ListAISystemMessagesResponse, ListMessageTemplateRequest, ListMessageTemplateResponse, ListMessagesRequest, ListMessagesRequestListMessagesFilters, ListMessagesResponse, ListResponseEvaluationsRequest, ListResponseEvaluationsResponse, ListResponseEvaluationsResponseSummary, ListResponseEvaluationsResponseSummaryTheme, ListWidgetsRequest, ListWidgetsRequestListWidgetsFilters, ListWidgetsResponse, LookupConversationsRequest, LookupConversationsRequestLookupConversationsFilters, LookupConversationsResponse, LookupConversationsResponseConversations, Media, Message, MessageStatus, MessageTemplate, MessageType, Metadata, MetadataDataEntry, MetadataIdentifier, NamespaceDetail, NewInboxLeadCapturedRequest, NewInboxLeadCapturedResponse, PagedRequestOptions, PagedResponseMetadata, Participant, ParticipantKey, ParticipantMessageStatus, ParticipantType, PlatformLocation, ProductFeature, ReceiveMessageRequest, ReceiveMessageRequestMetadataEntry, RemoveConversationFromConversationViewRequest, ResponseEvaluation, SearchConversationsRequest, SearchConversationsResponse, SearchConversationsResponseDetailedConversation, SendMessageOptions, SendMessageRequest, SendMessageResponse, SendStatus, SendWidgetMessageRequest, SendWidgetMessageResponse, SetLastSeenRequest, SetLastSeenRequestStatus, SetLastSeenResponse, SortDirection, Status, SubjectParticipant, SubjectParticipantKey, UpdateConversationRequest, UpdateConversationResponse, UpdateMessageStatusRequest, UpdateMessageTemplateRequest, UpdateMessageTemplateResponse, UpdateWidgetRequest, UpdateWidgetResponse, UpsertAISystemMessageRequest, UpsertConfigurationRequest, UpsertConfigurationResponse, UpsertProductFeatureRequest, UpsertProductFeatureResponse, View, ViewType, Widget, WidgetPosition, WidgetVisit };
|
|
5830
|
+
export { AIConfiguration, AISystemMessage, AISystemMessageApiService, Access, AddConversationToConversationViewRequest, AddMultiParticipantsRequest, AddMultiParticipantsResponse, Address, CapturedLead, ChannelAvailability, ChannelStatus, Configuration, ConfigurationAIConfiguration, Conversation, ConversationApiService, ConversationChannel, ConversationKey, ConversationMessageCount, CreateConversationRequest, CreateConversationResponse, CreateMessageTemplateRequest, CreateMessageTemplateResponse, CreateMultiMessagesRequest, CreateWidgetConversationRequest, CreateWidgetConversationResponse, CreateWidgetRequest, CreateWidgetResponse, DataSources, DeleteConversationRequest, DeleteMessageRequest, DeleteMessageTemplateRequest, DeleteWidgetRequest, EmailApiService, EvaluateResponseRequest, EvaluateResponseType, EvaluationSentiment, Event, EventType, FieldMask, GetAISystemMessageRequest, GetAISystemMessageResponse, GetAvailableChannelsForConversationRequest, GetAvailableChannelsForConversationResponse, GetConfigurationRequest, GetConfigurationResponse, GetConversationByKeyRequest, GetConversationByKeyResponse, GetConversationSummaryRequest, GetConversationSummaryResponse, GetConversationViewsRequest, GetConversationViewsResponse, GetMessageOptions, GetMessageRequest, GetMessageTemplateRequest, GetMessageTemplateRequestHydrationOptions, GetMessageTemplateRequestHydrationOptionsHydrationEntity, GetMessageTemplateRequestHydrationOptionsHydrationEntityEntityType, GetMessageTemplateResponse, GetMessageTemplateResponseHydrationInformation, GetMultiConfigurationRequest, GetMultiConfigurationResponse, GetMultiConversationDetailsRequest, GetMultiConversationDetailsResponse, GetMultiConversationDetailsResponseDetailedConversation, GetMultiConversationMessageCountRequest, GetMultiConversationMessageCountResponse, GetMultiConversationMessageCountResponseCountsEntry, GetMultiEventsRequest, GetMultiEventsResponse, GetMultiMessagesRequest, GetMultiMessagesResponse, GetMultiParticipantsRequest, GetMultiParticipantsResponse, GetMultiWidgetMessagesRequest, GetMultiWidgetMessagesResponse, GetMultiWidgetRequest, GetMultiWidgetResponse, GetOwnerEmailRequest, GetOwnerEmailResponse, GetParticipantsByKeyRequest, GetParticipantsByKeyResponse, GetWidgetConfigRequest, GetWidgetConfigResponse, GetWidgetConversationResponse, GetWidgetRequest, GetWidgetResponse, GlobalParticipantType, InboxApiService, InjectMessageRequest, InjectMessageRequestMetadataEntry, KeyValuePair, LastSeenByParticipant, LatestMessageSentTimeBySubjectParticipant, ListAISystemMessagesRequest, ListAISystemMessagesResponse, ListMessageTemplateRequest, ListMessageTemplateResponse, ListMessagesRequest, ListMessagesRequestListMessagesFilters, ListMessagesResponse, ListResponseEvaluationsRequest, ListResponseEvaluationsResponse, ListResponseEvaluationsResponseSummary, ListResponseEvaluationsResponseSummaryTheme, ListWidgetsRequest, ListWidgetsRequestListWidgetsFilters, ListWidgetsResponse, LookupConversationsRequest, LookupConversationsRequestLookupConversationsFilters, LookupConversationsResponse, LookupConversationsResponseConversations, Media, Message, MessageStatus, MessageTemplate, MessageType, Metadata, MetadataDataEntry, MetadataIdentifier, NamespaceDetail, NewInboxLeadCapturedRequest, NewInboxLeadCapturedResponse, PagedRequestOptions, PagedResponseMetadata, Participant, ParticipantKey, ParticipantMessageStatus, ParticipantType, PlatformLocation, ProductFeature, ReceiveMessageRequest, ReceiveMessageRequestMetadataEntry, RemoveConversationFromConversationViewRequest, ResponseEvaluation, SearchConversationsRequest, SearchConversationsResponse, SearchConversationsResponseDetailedConversation, SendMessageOptions, SendMessageRequest, SendMessageResponse, SendStatus, SendWidgetMessageRequest, SendWidgetMessageResponse, SetLastSeenRequest, SetLastSeenRequestStatus, SetLastSeenResponse, SortDirection, Status, SubjectParticipant, SubjectParticipantKey, UpdateConversationRequest, UpdateConversationResponse, UpdateMessageStatusRequest, UpdateMessageTemplateRequest, UpdateMessageTemplateResponse, UpdateWidgetRequest, UpdateWidgetResponse, UpsertAISystemMessageRequest, UpsertConfigurationRequest, UpsertConfigurationResponse, UpsertProductFeatureRequest, UpsertProductFeatureResponse, View, ViewType, Widget, WidgetPosition, WidgetVisit };
|
|
5804
5831
|
//# sourceMappingURL=vendasta-conversation.mjs.map
|