@vendasta/social-posts 5.45.8 → 5.47.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.
Files changed (51) hide show
  1. package/esm2020/lib/_internal/enums/engagement.enum.mjs +13 -0
  2. package/esm2020/lib/_internal/enums/index.mjs +3 -1
  3. package/esm2020/lib/_internal/enums/stock-image.enum.mjs +12 -0
  4. package/esm2020/lib/_internal/image-library.api.service.mjs +40 -0
  5. package/esm2020/lib/_internal/index.mjs +4 -1
  6. package/esm2020/lib/_internal/interfaces/api.interface.mjs +1 -1
  7. package/esm2020/lib/_internal/interfaces/engagement.interface.mjs +2 -0
  8. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  9. package/esm2020/lib/_internal/interfaces/social-post-stats.interface.mjs +1 -1
  10. package/esm2020/lib/_internal/interfaces/social-posts.interface.mjs +1 -1
  11. package/esm2020/lib/_internal/interfaces/stock-image.interface.mjs +8 -0
  12. package/esm2020/lib/_internal/multilocation-post.api.service.mjs +2 -3
  13. package/esm2020/lib/_internal/objects/api.mjs +83 -2
  14. package/esm2020/lib/_internal/objects/engagement.mjs +221 -0
  15. package/esm2020/lib/_internal/objects/index.mjs +7 -5
  16. package/esm2020/lib/_internal/objects/social-post-stats.mjs +213 -1
  17. package/esm2020/lib/_internal/objects/social-posts.mjs +33 -1
  18. package/esm2020/lib/_internal/objects/stock-image.mjs +110 -0
  19. package/esm2020/lib/_internal/social-mentions.api.service.mjs +40 -0
  20. package/esm2020/lib/_internal/social-post-engagements.api.service.mjs +40 -0
  21. package/esm2020/lib/index.mjs +2 -1
  22. package/esm2020/lib/multilocation-posts.service.mjs +1 -1
  23. package/esm2020/lib/social-mentions.service.mjs +27 -0
  24. package/fesm2015/vendasta-social-posts.mjs +962 -164
  25. package/fesm2015/vendasta-social-posts.mjs.map +1 -1
  26. package/fesm2020/vendasta-social-posts.mjs +962 -164
  27. package/fesm2020/vendasta-social-posts.mjs.map +1 -1
  28. package/lib/_internal/enums/engagement.enum.d.ts +5 -0
  29. package/lib/_internal/enums/index.d.ts +2 -0
  30. package/lib/_internal/enums/stock-image.enum.d.ts +4 -0
  31. package/lib/_internal/image-library.api.service.d.ts +13 -0
  32. package/lib/_internal/index.d.ts +3 -0
  33. package/lib/_internal/interfaces/api.interface.d.ts +17 -1
  34. package/lib/_internal/interfaces/engagement.interface.d.ts +37 -0
  35. package/lib/_internal/interfaces/index.d.ts +6 -4
  36. package/lib/_internal/interfaces/social-post-stats.interface.d.ts +32 -0
  37. package/lib/_internal/interfaces/social-posts.interface.d.ts +7 -0
  38. package/lib/_internal/interfaces/stock-image.interface.d.ts +21 -0
  39. package/lib/_internal/multilocation-post.api.service.d.ts +1 -1
  40. package/lib/_internal/objects/api.d.ts +26 -1
  41. package/lib/_internal/objects/engagement.d.ts +60 -0
  42. package/lib/_internal/objects/index.d.ts +6 -4
  43. package/lib/_internal/objects/social-post-stats.d.ts +44 -0
  44. package/lib/_internal/objects/social-posts.d.ts +10 -0
  45. package/lib/_internal/objects/stock-image.d.ts +32 -0
  46. package/lib/_internal/social-mentions.api.service.d.ts +13 -0
  47. package/lib/_internal/social-post-engagements.api.service.d.ts +13 -0
  48. package/lib/index.d.ts +1 -0
  49. package/lib/multilocation-posts.service.d.ts +1 -1
  50. package/lib/social-mentions.service.d.ts +11 -0
  51. package/package.json +1 -1
@@ -57,6 +57,100 @@ export class FacebookPostStats {
57
57
  return toReturn;
58
58
  }
59
59
  }
60
+ export class InstagramPostStats {
61
+ static fromProto(proto) {
62
+ let m = new InstagramPostStats();
63
+ m = Object.assign(m, proto);
64
+ if (proto.likeCount) {
65
+ m.likeCount = parseInt(proto.likeCount, 10);
66
+ }
67
+ if (proto.commentCount) {
68
+ m.commentCount = parseInt(proto.commentCount, 10);
69
+ }
70
+ if (proto.saves) {
71
+ m.saves = parseInt(proto.saves, 10);
72
+ }
73
+ if (proto.reach) {
74
+ m.reach = parseInt(proto.reach, 10);
75
+ }
76
+ if (proto.videoViews) {
77
+ m.videoViews = parseInt(proto.videoViews, 10);
78
+ }
79
+ return m;
80
+ }
81
+ constructor(kwargs) {
82
+ if (!kwargs) {
83
+ return;
84
+ }
85
+ Object.assign(this, kwargs);
86
+ }
87
+ toApiJson() {
88
+ const toReturn = {};
89
+ if (typeof this.likeCount !== 'undefined') {
90
+ toReturn['likeCount'] = this.likeCount;
91
+ }
92
+ if (typeof this.commentCount !== 'undefined') {
93
+ toReturn['commentCount'] = this.commentCount;
94
+ }
95
+ if (typeof this.saves !== 'undefined') {
96
+ toReturn['saves'] = this.saves;
97
+ }
98
+ if (typeof this.reach !== 'undefined') {
99
+ toReturn['reach'] = this.reach;
100
+ }
101
+ if (typeof this.videoViews !== 'undefined') {
102
+ toReturn['videoViews'] = this.videoViews;
103
+ }
104
+ return toReturn;
105
+ }
106
+ }
107
+ export class LinkedInPostStats {
108
+ static fromProto(proto) {
109
+ let m = new LinkedInPostStats();
110
+ m = Object.assign(m, proto);
111
+ if (proto.likeCount) {
112
+ m.likeCount = parseInt(proto.likeCount, 10);
113
+ }
114
+ if (proto.commentCount) {
115
+ m.commentCount = parseInt(proto.commentCount, 10);
116
+ }
117
+ if (proto.shareCount) {
118
+ m.shareCount = parseInt(proto.shareCount, 10);
119
+ }
120
+ if (proto.clicks) {
121
+ m.clicks = parseInt(proto.clicks, 10);
122
+ }
123
+ if (proto.impressions) {
124
+ m.impressions = parseInt(proto.impressions, 10);
125
+ }
126
+ return m;
127
+ }
128
+ constructor(kwargs) {
129
+ if (!kwargs) {
130
+ return;
131
+ }
132
+ Object.assign(this, kwargs);
133
+ }
134
+ toApiJson() {
135
+ const toReturn = {};
136
+ if (typeof this.likeCount !== 'undefined') {
137
+ toReturn['likeCount'] = this.likeCount;
138
+ }
139
+ if (typeof this.commentCount !== 'undefined') {
140
+ toReturn['commentCount'] = this.commentCount;
141
+ }
142
+ if (typeof this.shareCount !== 'undefined') {
143
+ toReturn['shareCount'] = this.shareCount;
144
+ }
145
+ if (typeof this.clicks !== 'undefined') {
146
+ toReturn['clicks'] = this.clicks;
147
+ }
148
+ if (typeof this.impressions !== 'undefined') {
149
+ toReturn['impressions'] = this.impressions;
150
+ }
151
+ return toReturn;
152
+ }
153
+ }
60
154
  export class SocialPostStats {
61
155
  static fromProto(proto) {
62
156
  let m = new SocialPostStats();
@@ -67,6 +161,18 @@ export class SocialPostStats {
67
161
  if (proto.twitterPostStats) {
68
162
  m.twitterPostStats = TwitterPostStats.fromProto(proto.twitterPostStats);
69
163
  }
164
+ if (proto.linkedinPostStats) {
165
+ m.linkedinPostStats = LinkedInPostStats.fromProto(proto.linkedinPostStats);
166
+ }
167
+ if (proto.instagramPostStats) {
168
+ m.instagramPostStats = InstagramPostStats.fromProto(proto.instagramPostStats);
169
+ }
170
+ if (proto.youtubePostStats) {
171
+ m.youtubePostStats = YoutubePostStats.fromProto(proto.youtubePostStats);
172
+ }
173
+ if (proto.tiktokPostStats) {
174
+ m.tiktokPostStats = TikTokPostStats.fromProto(proto.tiktokPostStats);
175
+ }
70
176
  return m;
71
177
  }
72
178
  constructor(kwargs) {
@@ -86,6 +192,59 @@ export class SocialPostStats {
86
192
  if (typeof this.twitterPostStats !== 'undefined' && this.twitterPostStats !== null) {
87
193
  toReturn['twitterPostStats'] = 'toApiJson' in this.twitterPostStats ? this.twitterPostStats.toApiJson() : this.twitterPostStats;
88
194
  }
195
+ if (typeof this.linkedinPostStats !== 'undefined' && this.linkedinPostStats !== null) {
196
+ toReturn['linkedinPostStats'] = 'toApiJson' in this.linkedinPostStats ? this.linkedinPostStats.toApiJson() : this.linkedinPostStats;
197
+ }
198
+ if (typeof this.instagramPostStats !== 'undefined' && this.instagramPostStats !== null) {
199
+ toReturn['instagramPostStats'] = 'toApiJson' in this.instagramPostStats ? this.instagramPostStats.toApiJson() : this.instagramPostStats;
200
+ }
201
+ if (typeof this.youtubePostStats !== 'undefined' && this.youtubePostStats !== null) {
202
+ toReturn['youtubePostStats'] = 'toApiJson' in this.youtubePostStats ? this.youtubePostStats.toApiJson() : this.youtubePostStats;
203
+ }
204
+ if (typeof this.tiktokPostStats !== 'undefined' && this.tiktokPostStats !== null) {
205
+ toReturn['tiktokPostStats'] = 'toApiJson' in this.tiktokPostStats ? this.tiktokPostStats.toApiJson() : this.tiktokPostStats;
206
+ }
207
+ return toReturn;
208
+ }
209
+ }
210
+ export class TikTokPostStats {
211
+ static fromProto(proto) {
212
+ let m = new TikTokPostStats();
213
+ m = Object.assign(m, proto);
214
+ if (proto.likeCount) {
215
+ m.likeCount = parseInt(proto.likeCount, 10);
216
+ }
217
+ if (proto.commentCount) {
218
+ m.commentCount = parseInt(proto.commentCount, 10);
219
+ }
220
+ if (proto.shareCount) {
221
+ m.shareCount = parseInt(proto.shareCount, 10);
222
+ }
223
+ if (proto.peopleReached) {
224
+ m.peopleReached = parseInt(proto.peopleReached, 10);
225
+ }
226
+ return m;
227
+ }
228
+ constructor(kwargs) {
229
+ if (!kwargs) {
230
+ return;
231
+ }
232
+ Object.assign(this, kwargs);
233
+ }
234
+ toApiJson() {
235
+ const toReturn = {};
236
+ if (typeof this.likeCount !== 'undefined') {
237
+ toReturn['likeCount'] = this.likeCount;
238
+ }
239
+ if (typeof this.commentCount !== 'undefined') {
240
+ toReturn['commentCount'] = this.commentCount;
241
+ }
242
+ if (typeof this.shareCount !== 'undefined') {
243
+ toReturn['shareCount'] = this.shareCount;
244
+ }
245
+ if (typeof this.peopleReached !== 'undefined') {
246
+ toReturn['peopleReached'] = this.peopleReached;
247
+ }
89
248
  return toReturn;
90
249
  }
91
250
  }
@@ -124,4 +283,57 @@ export class TwitterPostStats {
124
283
  return toReturn;
125
284
  }
126
285
  }
127
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLXBvc3Qtc3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb2NpYWxfcG9zdHNfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvc29jaWFsLXBvc3Qtc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQVMxQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFBQyxDQUFDLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDNUUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQ3RFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUNuRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxD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QUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxVQUFVLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FBQztRQUN2RixJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUFDO1FBQ2hHLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQUM7UUFDakYsSUFBSSxPQUFPLElBQUksQ0FBQyxZQUFZLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7U0FBQztRQUM3RixPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbmltcG9ydCAqIGFzIGUgZnJvbSAnLi4vZW51bXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZW51bVN0cmluZ1RvVmFsdWU8RT4oZW51bVJlZjogYW55LCB2YWx1ZTogc3RyaW5nKTogRSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBlbnVtUmVmW3ZhbHVlXTtcbn1cblxuZXhwb3J0IGNsYXNzIEZhY2Vib29rUG9zdFN0YXRzIGltcGxlbWVudHMgaS5GYWNlYm9va1Bvc3RTdGF0c0ludGVyZmFjZSB7XG4gICAgY29tbWVudENvdW50OiBudW1iZXI7XG4gICAgc2hhcmVDb3VudDogbnVtYmVyO1xuICAgIGxpa2VDb3VudDogbnVtYmVyO1xuICAgIGhhc0xpa2U6IGJvb2xlYW47XG4gICAgY2FuTGlrZTogYm9vbGVhbjtcbiAgICByZWFjdGlvbnM6IG51bWJlcjtcbiAgICBwZW9wbGVSZWFjaGVkOiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBGYWNlYm9va1Bvc3RTdGF0cyB7XG4gICAgICAgIGxldCBtID0gbmV3IEZhY2Vib29rUG9zdFN0YXRzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbW1lbnRDb3VudCkge20uY29tbWVudENvdW50ID0gcGFyc2VJbnQocHJvdG8uY29tbWVudENvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc2hhcmVDb3VudCkge20uc2hhcmVDb3VudCA9IHBhcnNlSW50KHByb3RvLnNoYXJlQ291bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5saWtlQ291bnQpIHttLmxpa2VDb3VudCA9IHBhcnNlSW50KHByb3RvLmxpa2VDb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJlYWN0aW9ucykge20ucmVhY3Rpb25zID0gcGFyc2VJbnQocHJvdG8ucmVhY3Rpb25zLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucGVvcGxlUmVhY2hlZCkge20ucGVvcGxlUmVhY2hlZCA9IHBhcnNlSW50KHByb3RvLnBlb3BsZVJlYWNoZWQsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRmFjZWJvb2tQb3N0U3RhdHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50Q291bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnRDb3VudCddID0gdGhpcy5jb21tZW50Q291bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2hhcmVDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2hhcmVDb3VudCddID0gdGhpcy5zaGFyZUNvdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpa2VDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlrZUNvdW50J10gPSB0aGlzLmxpa2VDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNMaWtlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNMaWtlJ10gPSB0aGlzLmhhc0xpa2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2FuTGlrZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY2FuTGlrZSddID0gdGhpcy5jYW5MaWtlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlYWN0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVhY3Rpb25zJ10gPSB0aGlzLnJlYWN0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wZW9wbGVSZWFjaGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwZW9wbGVSZWFjaGVkJ10gPSB0aGlzLnBlb3BsZVJlYWNoZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU29jaWFsUG9zdFN0YXRzIGltcGxlbWVudHMgaS5Tb2NpYWxQb3N0U3RhdHNJbnRlcmZhY2Uge1xuICAgIGludGVybmFsUG9zdElkOiBzdHJpbmc7XG4gICAgZmFjZWJvb2tQb3N0U3RhdHM6IEZhY2Vib29rUG9zdFN0YXRzO1xuICAgIHR3aXR0ZXJQb3N0U3RhdHM6IFR3aXR0ZXJQb3N0U3RhdHM7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb2NpYWxQb3N0U3RhdHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBTb2NpYWxQb3N0U3RhdHMoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uZmFjZWJvb2tQb3N0U3RhdHMpIHttLmZhY2Vib29rUG9zdFN0YXRzID0gRmFjZWJvb2tQb3N0U3RhdHMuZnJvbVByb3RvKHByb3RvLmZhY2Vib29rUG9zdFN0YXRzKTt9XG4gICAgICAgIGlmIChwcm90by50d2l0dGVyUG9zdFN0YXRzKSB7bS50d2l0dGVyUG9zdFN0YXRzID0gVHdpdHRlclBvc3RTdGF0cy5mcm9tUHJvdG8ocHJvdG8udHdpdHRlclBvc3RTdGF0cyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNvY2lhbFBvc3RTdGF0c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmludGVybmFsUG9zdElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbnRlcm5hbFBvc3RJZCddID0gdGhpcy5pbnRlcm5hbFBvc3RJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWNlYm9va1Bvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5mYWNlYm9va1Bvc3RTdGF0cyAhPT0gbnVsbCkge3RvUmV0dXJuWydmYWNlYm9va1Bvc3RTdGF0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5mYWNlYm9va1Bvc3RTdGF0cyA/ICh0aGlzLmZhY2Vib29rUG9zdFN0YXRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZhY2Vib29rUG9zdFN0YXRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnR3aXR0ZXJQb3N0U3RhdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudHdpdHRlclBvc3RTdGF0cyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0d2l0dGVyUG9zdFN0YXRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnR3aXR0ZXJQb3N0U3RhdHMgPyAodGhpcy50d2l0dGVyUG9zdFN0YXRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnR3aXR0ZXJQb3N0U3RhdHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHdpdHRlclBvc3RTdGF0cyBpbXBsZW1lbnRzIGkuVHdpdHRlclBvc3RTdGF0c0ludGVyZmFjZSB7XG4gICAgZmF2b3VyaXRlczogbnVtYmVyO1xuICAgIGhhc0Zhdm91cml0ZWQ6IGJvb2xlYW47XG4gICAgcmV0d2VldHM6IG51bWJlcjtcbiAgICBoYXNSZXR3ZWV0ZWQ6IGJvb2xlYW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUd2l0dGVyUG9zdFN0YXRzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVHdpdHRlclBvc3RTdGF0cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5mYXZvdXJpdGVzKSB7bS5mYXZvdXJpdGVzID0gcGFyc2VJbnQocHJvdG8uZmF2b3VyaXRlcywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJldHdlZXRzKSB7bS5yZXR3ZWV0cyA9IHBhcnNlSW50KHByb3RvLnJldHdlZXRzLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlR3aXR0ZXJQb3N0U3RhdHNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYXZvdXJpdGVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmYXZvdXJpdGVzJ10gPSB0aGlzLmZhdm91cml0ZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFzRmF2b3VyaXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaGFzRmF2b3VyaXRlZCddID0gdGhpcy5oYXNGYXZvdXJpdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJldHdlZXRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydyZXR3ZWV0cyddID0gdGhpcy5yZXR3ZWV0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNSZXR3ZWV0ZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2hhc1JldHdlZXRlZCddID0gdGhpcy5oYXNSZXR3ZWV0ZWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=
286
+ export class YoutubePostStats {
287
+ static fromProto(proto) {
288
+ let m = new YoutubePostStats();
289
+ m = Object.assign(m, proto);
290
+ if (proto.likeCount) {
291
+ m.likeCount = parseInt(proto.likeCount, 10);
292
+ }
293
+ if (proto.commentCount) {
294
+ m.commentCount = parseInt(proto.commentCount, 10);
295
+ }
296
+ if (proto.favourites) {
297
+ m.favourites = parseInt(proto.favourites, 10);
298
+ }
299
+ if (proto.views) {
300
+ m.views = parseInt(proto.views, 10);
301
+ }
302
+ if (proto.videoViews) {
303
+ m.videoViews = parseInt(proto.videoViews, 10);
304
+ }
305
+ if (proto.dislikeCount) {
306
+ m.dislikeCount = parseInt(proto.dislikeCount, 10);
307
+ }
308
+ return m;
309
+ }
310
+ constructor(kwargs) {
311
+ if (!kwargs) {
312
+ return;
313
+ }
314
+ Object.assign(this, kwargs);
315
+ }
316
+ toApiJson() {
317
+ const toReturn = {};
318
+ if (typeof this.likeCount !== 'undefined') {
319
+ toReturn['likeCount'] = this.likeCount;
320
+ }
321
+ if (typeof this.commentCount !== 'undefined') {
322
+ toReturn['commentCount'] = this.commentCount;
323
+ }
324
+ if (typeof this.favourites !== 'undefined') {
325
+ toReturn['favourites'] = this.favourites;
326
+ }
327
+ if (typeof this.views !== 'undefined') {
328
+ toReturn['views'] = this.views;
329
+ }
330
+ if (typeof this.videoViews !== 'undefined') {
331
+ toReturn['videoViews'] = this.videoViews;
332
+ }
333
+ if (typeof this.dislikeCount !== 'undefined') {
334
+ toReturn['dislikeCount'] = this.dislikeCount;
335
+ }
336
+ return toReturn;
337
+ }
338
+ }
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29jaWFsLXBvc3Qtc3RhdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zb2NpYWxfcG9zdHNfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvc29jaWFsLXBvc3Qtc3RhdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLGlCQUFpQjtJQVMxQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1FBQ2hDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxZQUFZLEVBQUU7WUFBQyxDQUFDLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQUM7UUFDNUUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUFDO1FBQ3RFLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtZQUFDLENBQUMsQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FBQztRQUNuRSxJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxD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LElBQUksQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7U0FBQztRQUN4RSxJQUFJLE9BQU8sSUFBSSxDQUFDLFVBQVUsS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQ3ZGLElBQUksT0FBTyxJQUFJLENBQUMsWUFBWSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1NBQUM7UUFDN0YsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBGYWNlYm9va1Bvc3RTdGF0cyBpbXBsZW1lbnRzIGkuRmFjZWJvb2tQb3N0U3RhdHNJbnRlcmZhY2Uge1xuICAgIGNvbW1lbnRDb3VudDogbnVtYmVyO1xuICAgIHNoYXJlQ291bnQ6IG51bWJlcjtcbiAgICBsaWtlQ291bnQ6IG51bWJlcjtcbiAgICBoYXNMaWtlOiBib29sZWFuO1xuICAgIGNhbkxpa2U6IGJvb2xlYW47XG4gICAgcmVhY3Rpb25zOiBudW1iZXI7XG4gICAgcGVvcGxlUmVhY2hlZDogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRmFjZWJvb2tQb3N0U3RhdHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBGYWNlYm9va1Bvc3RTdGF0cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb21tZW50Q291bnQpIHttLmNvbW1lbnRDb3VudCA9IHBhcnNlSW50KHByb3RvLmNvbW1lbnRDb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnNoYXJlQ291bnQpIHttLnNoYXJlQ291bnQgPSBwYXJzZUludChwcm90by5zaGFyZUNvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ubGlrZUNvdW50KSB7bS5saWtlQ291bnQgPSBwYXJzZUludChwcm90by5saWtlQ291bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5yZWFjdGlvbnMpIHttLnJlYWN0aW9ucyA9IHBhcnNlSW50KHByb3RvLnJlYWN0aW9ucywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnBlb3BsZVJlYWNoZWQpIHttLnBlb3BsZVJlYWNoZWQgPSBwYXJzZUludChwcm90by5wZW9wbGVSZWFjaGVkLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkZhY2Vib29rUG9zdFN0YXRzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29tbWVudENvdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjb21tZW50Q291bnQnXSA9IHRoaXMuY29tbWVudENvdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNoYXJlQ291bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NoYXJlQ291bnQnXSA9IHRoaXMuc2hhcmVDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5saWtlQ291bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2xpa2VDb3VudCddID0gdGhpcy5saWtlQ291bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaGFzTGlrZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaGFzTGlrZSddID0gdGhpcy5oYXNMaWtlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbkxpa2UgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Nhbkxpa2UnXSA9IHRoaXMuY2FuTGlrZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZWFjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlYWN0aW9ucyddID0gdGhpcy5yZWFjdGlvbnM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGVvcGxlUmVhY2hlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncGVvcGxlUmVhY2hlZCddID0gdGhpcy5wZW9wbGVSZWFjaGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEluc3RhZ3JhbVBvc3RTdGF0cyBpbXBsZW1lbnRzIGkuSW5zdGFncmFtUG9zdFN0YXRzSW50ZXJmYWNlIHtcbiAgICBsaWtlQ291bnQ6IG51bWJlcjtcbiAgICBjb21tZW50Q291bnQ6IG51bWJlcjtcbiAgICBzYXZlczogbnVtYmVyO1xuICAgIHJlYWNoOiBudW1iZXI7XG4gICAgdmlkZW9WaWV3czogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogSW5zdGFncmFtUG9zdFN0YXRzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgSW5zdGFncmFtUG9zdFN0YXRzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmxpa2VDb3VudCkge20ubGlrZUNvdW50ID0gcGFyc2VJbnQocHJvdG8ubGlrZUNvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uY29tbWVudENvdW50KSB7bS5jb21tZW50Q291bnQgPSBwYXJzZUludChwcm90by5jb21tZW50Q291bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5zYXZlcykge20uc2F2ZXMgPSBwYXJzZUludChwcm90by5zYXZlcywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnJlYWNoKSB7bS5yZWFjaCA9IHBhcnNlSW50KHByb3RvLnJlYWNoLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8udmlkZW9WaWV3cykge20udmlkZW9WaWV3cyA9IHBhcnNlSW50KHByb3RvLnZpZGVvVmlld3MsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuSW5zdGFncmFtUG9zdFN0YXRzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlrZUNvdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaWtlQ291bnQnXSA9IHRoaXMubGlrZUNvdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1lbnRDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29tbWVudENvdW50J10gPSB0aGlzLmNvbW1lbnRDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zYXZlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2F2ZXMnXSA9IHRoaXMuc2F2ZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVhY2ggIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlYWNoJ10gPSB0aGlzLnJlYWNoO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZpZGVvVmlld3MgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZpZGVvVmlld3MnXSA9IHRoaXMudmlkZW9WaWV3czt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaW5rZWRJblBvc3RTdGF0cyBpbXBsZW1lbnRzIGkuTGlua2VkSW5Qb3N0U3RhdHNJbnRlcmZhY2Uge1xuICAgIGxpa2VDb3VudDogbnVtYmVyO1xuICAgIGNvbW1lbnRDb3VudDogbnVtYmVyO1xuICAgIHNoYXJlQ291bnQ6IG51bWJlcjtcbiAgICBjbGlja3M6IG51bWJlcjtcbiAgICBpbXByZXNzaW9uczogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlua2VkSW5Qb3N0U3RhdHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaW5rZWRJblBvc3RTdGF0cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5saWtlQ291bnQpIHttLmxpa2VDb3VudCA9IHBhcnNlSW50KHByb3RvLmxpa2VDb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmNvbW1lbnRDb3VudCkge20uY29tbWVudENvdW50ID0gcGFyc2VJbnQocHJvdG8uY29tbWVudENvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uc2hhcmVDb3VudCkge20uc2hhcmVDb3VudCA9IHBhcnNlSW50KHByb3RvLnNoYXJlQ291bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5jbGlja3MpIHttLmNsaWNrcyA9IHBhcnNlSW50KHByb3RvLmNsaWNrcywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmltcHJlc3Npb25zKSB7bS5pbXByZXNzaW9ucyA9IHBhcnNlSW50KHByb3RvLmltcHJlc3Npb25zLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpbmtlZEluUG9zdFN0YXRzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGlrZUNvdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsaWtlQ291bnQnXSA9IHRoaXMubGlrZUNvdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbW1lbnRDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnY29tbWVudENvdW50J10gPSB0aGlzLmNvbW1lbnRDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zaGFyZUNvdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzaGFyZUNvdW50J10gPSB0aGlzLnNoYXJlQ291bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2xpY2tzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjbGlja3MnXSA9IHRoaXMuY2xpY2tzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmltcHJlc3Npb25zICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpbXByZXNzaW9ucyddID0gdGhpcy5pbXByZXNzaW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb2NpYWxQb3N0U3RhdHMgaW1wbGVtZW50cyBpLlNvY2lhbFBvc3RTdGF0c0ludGVyZmFjZSB7XG4gICAgaW50ZXJuYWxQb3N0SWQ6IHN0cmluZztcbiAgICBmYWNlYm9va1Bvc3RTdGF0czogRmFjZWJvb2tQb3N0U3RhdHM7XG4gICAgdHdpdHRlclBvc3RTdGF0czogVHdpdHRlclBvc3RTdGF0cztcbiAgICBsaW5rZWRpblBvc3RTdGF0czogTGlua2VkSW5Qb3N0U3RhdHM7XG4gICAgaW5zdGFncmFtUG9zdFN0YXRzOiBJbnN0YWdyYW1Qb3N0U3RhdHM7XG4gICAgeW91dHViZVBvc3RTdGF0czogWW91dHViZVBvc3RTdGF0cztcbiAgICB0aWt0b2tQb3N0U3RhdHM6IFRpa1Rva1Bvc3RTdGF0cztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFNvY2lhbFBvc3RTdGF0cyB7XG4gICAgICAgIGxldCBtID0gbmV3IFNvY2lhbFBvc3RTdGF0cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5mYWNlYm9va1Bvc3RTdGF0cykge20uZmFjZWJvb2tQb3N0U3RhdHMgPSBGYWNlYm9va1Bvc3RTdGF0cy5mcm9tUHJvdG8ocHJvdG8uZmFjZWJvb2tQb3N0U3RhdHMpO31cbiAgICAgICAgaWYgKHByb3RvLnR3aXR0ZXJQb3N0U3RhdHMpIHttLnR3aXR0ZXJQb3N0U3RhdHMgPSBUd2l0dGVyUG9zdFN0YXRzLmZyb21Qcm90byhwcm90by50d2l0dGVyUG9zdFN0YXRzKTt9XG4gICAgICAgIGlmIChwcm90by5saW5rZWRpblBvc3RTdGF0cykge20ubGlua2VkaW5Qb3N0U3RhdHMgPSBMaW5rZWRJblBvc3RTdGF0cy5mcm9tUHJvdG8ocHJvdG8ubGlua2VkaW5Qb3N0U3RhdHMpO31cbiAgICAgICAgaWYgKHByb3RvLmluc3RhZ3JhbVBvc3RTdGF0cykge20uaW5zdGFncmFtUG9zdFN0YXRzID0gSW5zdGFncmFtUG9zdFN0YXRzLmZyb21Qcm90byhwcm90by5pbnN0YWdyYW1Qb3N0U3RhdHMpO31cbiAgICAgICAgaWYgKHByb3RvLnlvdXR1YmVQb3N0U3RhdHMpIHttLnlvdXR1YmVQb3N0U3RhdHMgPSBZb3V0dWJlUG9zdFN0YXRzLmZyb21Qcm90byhwcm90by55b3V0dWJlUG9zdFN0YXRzKTt9XG4gICAgICAgIGlmIChwcm90by50aWt0b2tQb3N0U3RhdHMpIHttLnRpa3Rva1Bvc3RTdGF0cyA9IFRpa1Rva1Bvc3RTdGF0cy5mcm9tUHJvdG8ocHJvdG8udGlrdG9rUG9zdFN0YXRzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU29jaWFsUG9zdFN0YXRzSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaW50ZXJuYWxQb3N0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2ludGVybmFsUG9zdElkJ10gPSB0aGlzLmludGVybmFsUG9zdElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZhY2Vib29rUG9zdFN0YXRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZhY2Vib29rUG9zdFN0YXRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2ZhY2Vib29rUG9zdFN0YXRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmZhY2Vib29rUG9zdFN0YXRzID8gKHRoaXMuZmFjZWJvb2tQb3N0U3RhdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZmFjZWJvb2tQb3N0U3RhdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHdpdHRlclBvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50d2l0dGVyUG9zdFN0YXRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3R3aXR0ZXJQb3N0U3RhdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudHdpdHRlclBvc3RTdGF0cyA/ICh0aGlzLnR3aXR0ZXJQb3N0U3RhdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudHdpdHRlclBvc3RTdGF0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5saW5rZWRpblBvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5saW5rZWRpblBvc3RTdGF0cyAhPT0gbnVsbCkge3RvUmV0dXJuWydsaW5rZWRpblBvc3RTdGF0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5saW5rZWRpblBvc3RTdGF0cyA/ICh0aGlzLmxpbmtlZGluUG9zdFN0YXRzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxpbmtlZGluUG9zdFN0YXRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmluc3RhZ3JhbVBvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5pbnN0YWdyYW1Qb3N0U3RhdHMgIT09IG51bGwpIHt0b1JldHVyblsnaW5zdGFncmFtUG9zdFN0YXRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmluc3RhZ3JhbVBvc3RTdGF0cyA/ICh0aGlzLmluc3RhZ3JhbVBvc3RTdGF0cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5pbnN0YWdyYW1Qb3N0U3RhdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMueW91dHViZVBvc3RTdGF0cyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy55b3V0dWJlUG9zdFN0YXRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3lvdXR1YmVQb3N0U3RhdHMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMueW91dHViZVBvc3RTdGF0cyA/ICh0aGlzLnlvdXR1YmVQb3N0U3RhdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMueW91dHViZVBvc3RTdGF0czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50aWt0b2tQb3N0U3RhdHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGlrdG9rUG9zdFN0YXRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rpa3Rva1Bvc3RTdGF0cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50aWt0b2tQb3N0U3RhdHMgPyAodGhpcy50aWt0b2tQb3N0U3RhdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGlrdG9rUG9zdFN0YXRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRpa1Rva1Bvc3RTdGF0cyBpbXBsZW1lbnRzIGkuVGlrVG9rUG9zdFN0YXRzSW50ZXJmYWNlIHtcbiAgICBsaWtlQ291bnQ6IG51bWJlcjtcbiAgICBjb21tZW50Q291bnQ6IG51bWJlcjtcbiAgICBzaGFyZUNvdW50OiBudW1iZXI7XG4gICAgcGVvcGxlUmVhY2hlZDogbnVtYmVyO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogVGlrVG9rUG9zdFN0YXRzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVGlrVG9rUG9zdFN0YXRzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmxpa2VDb3VudCkge20ubGlrZUNvdW50ID0gcGFyc2VJbnQocHJvdG8ubGlrZUNvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uY29tbWVudENvdW50KSB7bS5jb21tZW50Q291bnQgPSBwYXJzZUludChwcm90by5jb21tZW50Q291bnQsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by5zaGFyZUNvdW50KSB7bS5zaGFyZUNvdW50ID0gcGFyc2VJbnQocHJvdG8uc2hhcmVDb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnBlb3BsZVJlYWNoZWQpIHttLnBlb3BsZVJlYWNoZWQgPSBwYXJzZUludChwcm90by5wZW9wbGVSZWFjaGVkLCAxMCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlRpa1Rva1Bvc3RTdGF0c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpa2VDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlrZUNvdW50J10gPSB0aGlzLmxpa2VDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50Q291bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnRDb3VudCddID0gdGhpcy5jb21tZW50Q291bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc2hhcmVDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc2hhcmVDb3VudCddID0gdGhpcy5zaGFyZUNvdW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBlb3BsZVJlYWNoZWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Blb3BsZVJlYWNoZWQnXSA9IHRoaXMucGVvcGxlUmVhY2hlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUd2l0dGVyUG9zdFN0YXRzIGltcGxlbWVudHMgaS5Ud2l0dGVyUG9zdFN0YXRzSW50ZXJmYWNlIHtcbiAgICBmYXZvdXJpdGVzOiBudW1iZXI7XG4gICAgaGFzRmF2b3VyaXRlZDogYm9vbGVhbjtcbiAgICByZXR3ZWV0czogbnVtYmVyO1xuICAgIGhhc1JldHdlZXRlZDogYm9vbGVhbjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFR3aXR0ZXJQb3N0U3RhdHMge1xuICAgICAgICBsZXQgbSA9IG5ldyBUd2l0dGVyUG9zdFN0YXRzKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmZhdm91cml0ZXMpIHttLmZhdm91cml0ZXMgPSBwYXJzZUludChwcm90by5mYXZvdXJpdGVzLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8ucmV0d2VldHMpIHttLnJldHdlZXRzID0gcGFyc2VJbnQocHJvdG8ucmV0d2VldHMsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVHdpdHRlclBvc3RTdGF0c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZhdm91cml0ZXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2Zhdm91cml0ZXMnXSA9IHRoaXMuZmF2b3VyaXRlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5oYXNGYXZvdXJpdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydoYXNGYXZvdXJpdGVkJ10gPSB0aGlzLmhhc0Zhdm91cml0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmV0d2VldHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JldHdlZXRzJ10gPSB0aGlzLnJldHdlZXRzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmhhc1JldHdlZXRlZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaGFzUmV0d2VldGVkJ10gPSB0aGlzLmhhc1JldHdlZXRlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBZb3V0dWJlUG9zdFN0YXRzIGltcGxlbWVudHMgaS5Zb3V0dWJlUG9zdFN0YXRzSW50ZXJmYWNlIHtcbiAgICBsaWtlQ291bnQ6IG51bWJlcjtcbiAgICBjb21tZW50Q291bnQ6IG51bWJlcjtcbiAgICBmYXZvdXJpdGVzOiBudW1iZXI7XG4gICAgdmlld3M6IG51bWJlcjtcbiAgICB2aWRlb1ZpZXdzOiBudW1iZXI7XG4gICAgZGlzbGlrZUNvdW50OiBudW1iZXI7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBZb3V0dWJlUG9zdFN0YXRzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgWW91dHViZVBvc3RTdGF0cygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5saWtlQ291bnQpIHttLmxpa2VDb3VudCA9IHBhcnNlSW50KHByb3RvLmxpa2VDb3VudCwgMTApO31cbiAgICAgICAgaWYgKHByb3RvLmNvbW1lbnRDb3VudCkge20uY29tbWVudENvdW50ID0gcGFyc2VJbnQocHJvdG8uY29tbWVudENvdW50LCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uZmF2b3VyaXRlcykge20uZmF2b3VyaXRlcyA9IHBhcnNlSW50KHByb3RvLmZhdm91cml0ZXMsIDEwKTt9XG4gICAgICAgIGlmIChwcm90by52aWV3cykge20udmlld3MgPSBwYXJzZUludChwcm90by52aWV3cywgMTApO31cbiAgICAgICAgaWYgKHByb3RvLnZpZGVvVmlld3MpIHttLnZpZGVvVmlld3MgPSBwYXJzZUludChwcm90by52aWRlb1ZpZXdzLCAxMCk7fVxuICAgICAgICBpZiAocHJvdG8uZGlzbGlrZUNvdW50KSB7bS5kaXNsaWtlQ291bnQgPSBwYXJzZUludChwcm90by5kaXNsaWtlQ291bnQsIDEwKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuWW91dHViZVBvc3RTdGF0c0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxpa2VDb3VudCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbGlrZUNvdW50J10gPSB0aGlzLmxpa2VDb3VudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb21tZW50Q291bnQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2NvbW1lbnRDb3VudCddID0gdGhpcy5jb21tZW50Q291bnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmF2b3VyaXRlcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZmF2b3VyaXRlcyddID0gdGhpcy5mYXZvdXJpdGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZpZXdzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aWV3cyddID0gdGhpcy52aWV3czt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52aWRlb1ZpZXdzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2aWRlb1ZpZXdzJ10gPSB0aGlzLnZpZGVvVmlld3M7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlzbGlrZUNvdW50ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkaXNsaWtlQ291bnQnXSA9IHRoaXMuZGlzbGlrZUNvdW50O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19