@amityco/ts-sdk 7.19.0 → 7.19.1-50d637a.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../../../src/core/transports/mqtt.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,cAAc,EAAsB,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"mqtt.d.ts","sourceRoot":"","sources":["../../../src/core/transports/mqtt.ts"],"names":[],"mappings":"AAEA,OAAa,EAAE,cAAc,EAAsB,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAqBtF,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,cAAc,CAWjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,aAAc,MAAM,KAAG,gBA6JtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mqtt.test.d.ts","sourceRoot":"","sources":["../../../../src/core/transports/tests/mqtt.test.ts"],"names":[],"mappings":""}
|
package/dist/index.cjs.js
CHANGED
|
@@ -4727,6 +4727,10 @@ const getDeviceInfo = () => {
|
|
|
4727
4727
|
const QOS_FAILURE_CODE = 128;
|
|
4728
4728
|
const RETRY_BASE_TIMEOUT = 1000;
|
|
4729
4729
|
const RETRY_MAX_TIMEOUT = 8000;
|
|
4730
|
+
// Subscription-level retry constants (separate from connection-level reconnect)
|
|
4731
|
+
const MAX_RETRIES = 2;
|
|
4732
|
+
const SUB_RETRY_BASE_DELAY = 1000;
|
|
4733
|
+
const SUB_RETRY_MAX_DELAY = 5000;
|
|
4730
4734
|
var MqttError;
|
|
4731
4735
|
(function (MqttError) {
|
|
4732
4736
|
MqttError[MqttError["IDENTIFIER_REJECTED"] = 2] = "IDENTIFIER_REJECTED";
|
|
@@ -4747,6 +4751,7 @@ function getMqttOptions(params) {
|
|
|
4747
4751
|
*/
|
|
4748
4752
|
const createMqttTransport = (endpoint) => {
|
|
4749
4753
|
let mqttClient;
|
|
4754
|
+
const retryState = new Map();
|
|
4750
4755
|
async function connect(params) {
|
|
4751
4756
|
const clientId = await getMQTTClientId(params.userId);
|
|
4752
4757
|
if (mqttClient) {
|
|
@@ -4775,8 +4780,47 @@ const createMqttTransport = (endpoint) => {
|
|
|
4775
4780
|
// Double the reconnect period for each attempt
|
|
4776
4781
|
mqttClient.options.reconnectPeriod = Math.min((mqttClient.options.reconnectPeriod || RETRY_BASE_TIMEOUT) * 2, RETRY_MAX_TIMEOUT);
|
|
4777
4782
|
});
|
|
4783
|
+
mqttClient.on('close', () => {
|
|
4784
|
+
retryState.forEach(({ timer }) => clearTimeout(timer));
|
|
4785
|
+
retryState.clear();
|
|
4786
|
+
});
|
|
4778
4787
|
return new Promise(resolve => mqttClient.once('connect', () => resolve()));
|
|
4779
4788
|
}
|
|
4789
|
+
function attemptSubscribe(topic, attempt, callback) {
|
|
4790
|
+
const callbackWrapper = (error, granted) => {
|
|
4791
|
+
var _a;
|
|
4792
|
+
const failed = error || ((_a = granted[0]) === null || _a === void 0 ? void 0 : _a.qos) === QOS_FAILURE_CODE;
|
|
4793
|
+
if (failed) {
|
|
4794
|
+
if (attempt < MAX_RETRIES) {
|
|
4795
|
+
const delay = Math.min(2 ** attempt * SUB_RETRY_BASE_DELAY, SUB_RETRY_MAX_DELAY);
|
|
4796
|
+
console.warn(`Failed to subscribe to topic ${topic} (attempt ${attempt + 1}/${MAX_RETRIES + 1}). Retrying in ${delay}ms.`);
|
|
4797
|
+
const timer = setTimeout(() => {
|
|
4798
|
+
attemptSubscribe(topic, attempt + 1, callback);
|
|
4799
|
+
}, delay);
|
|
4800
|
+
retryState.set(topic, { timer, callback });
|
|
4801
|
+
}
|
|
4802
|
+
else {
|
|
4803
|
+
retryState.delete(topic);
|
|
4804
|
+
const ascError = error
|
|
4805
|
+
? new ASCError(error.message, 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */)
|
|
4806
|
+
: new ASCUnknownError(800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
4807
|
+
console.warn(`Failed to subscribe to topic ${topic} after ${MAX_RETRIES + 1} attempts`, ascError);
|
|
4808
|
+
callback === null || callback === void 0 ? void 0 : callback(ascError);
|
|
4809
|
+
}
|
|
4810
|
+
}
|
|
4811
|
+
else {
|
|
4812
|
+
retryState.delete(topic);
|
|
4813
|
+
console.log(`Subscribed to topic ${topic}`);
|
|
4814
|
+
callback === null || callback === void 0 ? void 0 : callback();
|
|
4815
|
+
}
|
|
4816
|
+
};
|
|
4817
|
+
if (mqttClient) {
|
|
4818
|
+
mqttClient.subscribe(topic, { qos: 0 }, callbackWrapper);
|
|
4819
|
+
}
|
|
4820
|
+
else {
|
|
4821
|
+
callbackWrapper(new Error('No connection to broker'), []);
|
|
4822
|
+
}
|
|
4823
|
+
}
|
|
4780
4824
|
return {
|
|
4781
4825
|
connect,
|
|
4782
4826
|
async disconnect() {
|
|
@@ -4805,33 +4849,18 @@ const createMqttTransport = (endpoint) => {
|
|
|
4805
4849
|
mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.removeAllListeners();
|
|
4806
4850
|
},
|
|
4807
4851
|
subscribe(topic, callback) {
|
|
4808
|
-
|
|
4809
|
-
|
|
4810
|
-
// In MQTT.js, when you subscribe to a topic with QoS 0, the granted parameter
|
|
4811
|
-
// in the callback will typically be empty or undefined
|
|
4812
|
-
if (error || ((_a = granted[0]) === null || _a === void 0 ? void 0 : _a.qos) === QOS_FAILURE_CODE) {
|
|
4813
|
-
const ascError = error
|
|
4814
|
-
? new ASCError(error.message, 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */)
|
|
4815
|
-
: // TODO throw the actual error, once BE can tell us the actual error code
|
|
4816
|
-
new ASCUnknownError(800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
4817
|
-
// Use warning lv instead of error lv to prevent misunderstanding of user
|
|
4818
|
-
console.warn(`Failed to subscribe to topic ${topic}`, ascError);
|
|
4819
|
-
callback === null || callback === void 0 ? void 0 : callback(ascError);
|
|
4820
|
-
}
|
|
4821
|
-
else {
|
|
4822
|
-
console.log(`Subscribed to topic ${topic}`);
|
|
4823
|
-
callback === null || callback === void 0 ? void 0 : callback();
|
|
4824
|
-
}
|
|
4825
|
-
};
|
|
4826
|
-
if (mqttClient) {
|
|
4827
|
-
mqttClient.subscribe(topic, { qos: 0 }, callbackWrapper);
|
|
4828
|
-
}
|
|
4829
|
-
else {
|
|
4830
|
-
callbackWrapper(new Error('No connection to broker'), []);
|
|
4831
|
-
}
|
|
4832
|
-
return () => mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.unsubscribe(topic);
|
|
4852
|
+
attemptSubscribe(topic, 0, callback);
|
|
4853
|
+
return () => this.unsubscribe(topic);
|
|
4833
4854
|
},
|
|
4834
4855
|
unsubscribe(topic) {
|
|
4856
|
+
var _a;
|
|
4857
|
+
const pending = retryState.get(topic);
|
|
4858
|
+
if (pending !== undefined) {
|
|
4859
|
+
clearTimeout(pending.timer);
|
|
4860
|
+
retryState.delete(topic);
|
|
4861
|
+
const cancellationError = new ASCError('Subscription retry cancelled due to unsubscribe call', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
4862
|
+
(_a = pending.callback) === null || _a === void 0 ? void 0 : _a.call(pending, cancellationError);
|
|
4863
|
+
}
|
|
4835
4864
|
mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.unsubscribe(topic);
|
|
4836
4865
|
},
|
|
4837
4866
|
};
|
|
@@ -13203,7 +13232,7 @@ const getWatchSessionStorage = () => {
|
|
|
13203
13232
|
return storageInstance;
|
|
13204
13233
|
};
|
|
13205
13234
|
|
|
13206
|
-
const privateKey = "
|
|
13235
|
+
const privateKey = "MIIEpQIBAAKCAQEAwAEc/oZgYIvKSUG/C3mONYLR4ZPgAjMEX4bJ+xqqakUDRtqlNO+eZs2blQ1Ko0DBkqPExyQezvjibH5W2UZBV5RaBTlTcNVKTToMBEGesAfaEcM3qUyQHxdbFYZv6P4sb14dcwxTQ8usmaV8ooiR1Fcaso5ZWYcZ8Hb46FbQ7OoVumsBtPWwfZ4f003o5VCl6AIM6lcLv9UDLlFVYhE+PeXpRHtfWlGqxMvqC9oinlwhL6nWv6VjQXW4nhcib72dPBzfHT7k/PMKto2SxALYdb68ENiAGuJLWi3AUHSyYCJK2w7wIlWfJUAI0v26ub10IpExr6D5QuW2577jjP93iwIDAQABAoIBAFWfqXhwIIatkFY+9Z1+ZcbDQimgsmMIsUiQaX6Lk7e0cxOj6czDlxYtVtaPiNtow2pLkjNkjkCqiP7tEHnwdK9DvylZOTa2R15NJpK3WLcTqVIGhsn/FL5owfvFah6zSsmXZParZm5zY9NZE03ALZhOB9/cz0e3kf/EbpfeL2mW7MApyiUt5i09ycchroOpcWp73ipIxvgigtZyUGFmsQicWhUs28F0D7w4Qfk76yG3nqXeb+BAMhCaIaa/k/aAxhiZG/ygEQWQrcC8gfe+jyicMAQPDEVS9YuUMGsLjIjKuVLZzp2xirQnhc2i2zVNEIvG6soprPOBEMQugzrtX5ECgYEA3b7KAbBIbDl1e4ZSCWhHdHkiWVZHaopsR/LhqDDNhXjWjq3AesgV6k0j9EdziMn/HmmOso0bz99GTV3JZf4A9ztTLumJlkHbdVtlgOqSjrFLj12rH9KXTheyIhWSpUmm8+WB1xasFbqpvJaGo7F3pd2Fqj1XR4mp5BO7c/t7LJ0CgYEA3aouEzXQ9THRKYocdfY69EI1Il1t/d/RSqqd9BxEjxBgxkM13ZiYIn/R4WW/nCUrlmhxG44Aa2Gob4Ahfsui2xKTg/g/3Zk/rAxAEGkfOLGoenaJMD41fH4wUq3FRYwkvnaMb9Hd6f/TlBHslIRa2NN58bSBGJCyBP2b59+2+EcCgYEAixDVRXvV37GlYUOa/XVdosk5Zoe6oDGRuQm0xbNdoUBoZvDHDvme7ONWEiQha/8qtVsD+CyQ7awcPfb8kK9c0bBt+bTS6d4BkTcxkEkMgtrkBVR8Nqfu5jXsLH4VCv4G61zbMhZw8+ut+az5YX2yCN7Frj9sFlxapMRPQmzMEe0CgYEAumsAzM8ZqNv4mAK65Mnr0rhLj1cbxcKRdUYACOgtEFQpzxN/HZnTeFAe5nx3pI3uFlRHq3DFEYnT6dHMWaJQmAULYpVIwMi9L6gtyJ9fzoI6uqMtxRDMUqKdaSsTGOY/kJ6KhQ/unXi1K3XXjR+yd1+C0q+HUm1+CYxvrZYLfskCgYEArsEy+IQOiqniJ0NE2vVUF+UK/IRZaic9YKcpov5Ot7Vvzm/MnnW4N1ljVskocETBWMmPUvNSExVjPebi+rxd8fa5kY8BJScPTzMFbunZn/wjtGdcM10qdlVQ9doG61A/9P3ezFKCfS4AvF/H/59LcSx2Bh28fp3/efiVIOpVd4Y=";
|
|
13207
13236
|
/*
|
|
13208
13237
|
* The crypto algorithm used for importing key and signing string
|
|
13209
13238
|
*/
|
package/dist/index.esm.js
CHANGED
|
@@ -20803,6 +20803,10 @@ const getDeviceInfo = () => {
|
|
|
20803
20803
|
const QOS_FAILURE_CODE = 128;
|
|
20804
20804
|
const RETRY_BASE_TIMEOUT = 1000;
|
|
20805
20805
|
const RETRY_MAX_TIMEOUT = 8000;
|
|
20806
|
+
// Subscription-level retry constants (separate from connection-level reconnect)
|
|
20807
|
+
const MAX_RETRIES = 2;
|
|
20808
|
+
const SUB_RETRY_BASE_DELAY = 1000;
|
|
20809
|
+
const SUB_RETRY_MAX_DELAY = 5000;
|
|
20806
20810
|
var MqttError;
|
|
20807
20811
|
(function (MqttError) {
|
|
20808
20812
|
MqttError[MqttError["IDENTIFIER_REJECTED"] = 2] = "IDENTIFIER_REJECTED";
|
|
@@ -20823,6 +20827,7 @@ function getMqttOptions(params) {
|
|
|
20823
20827
|
*/
|
|
20824
20828
|
const createMqttTransport = (endpoint) => {
|
|
20825
20829
|
let mqttClient;
|
|
20830
|
+
const retryState = new Map();
|
|
20826
20831
|
async function connect(params) {
|
|
20827
20832
|
const clientId = await getMQTTClientId(params.userId);
|
|
20828
20833
|
if (mqttClient) {
|
|
@@ -20851,8 +20856,47 @@ const createMqttTransport = (endpoint) => {
|
|
|
20851
20856
|
// Double the reconnect period for each attempt
|
|
20852
20857
|
mqttClient.options.reconnectPeriod = Math.min((mqttClient.options.reconnectPeriod || RETRY_BASE_TIMEOUT) * 2, RETRY_MAX_TIMEOUT);
|
|
20853
20858
|
});
|
|
20859
|
+
mqttClient.on('close', () => {
|
|
20860
|
+
retryState.forEach(({ timer }) => clearTimeout(timer));
|
|
20861
|
+
retryState.clear();
|
|
20862
|
+
});
|
|
20854
20863
|
return new Promise(resolve => mqttClient.once('connect', () => resolve()));
|
|
20855
20864
|
}
|
|
20865
|
+
function attemptSubscribe(topic, attempt, callback) {
|
|
20866
|
+
const callbackWrapper = (error, granted) => {
|
|
20867
|
+
var _a;
|
|
20868
|
+
const failed = error || ((_a = granted[0]) === null || _a === void 0 ? void 0 : _a.qos) === QOS_FAILURE_CODE;
|
|
20869
|
+
if (failed) {
|
|
20870
|
+
if (attempt < MAX_RETRIES) {
|
|
20871
|
+
const delay = Math.min(2 ** attempt * SUB_RETRY_BASE_DELAY, SUB_RETRY_MAX_DELAY);
|
|
20872
|
+
console.warn(`Failed to subscribe to topic ${topic} (attempt ${attempt + 1}/${MAX_RETRIES + 1}). Retrying in ${delay}ms.`);
|
|
20873
|
+
const timer = setTimeout(() => {
|
|
20874
|
+
attemptSubscribe(topic, attempt + 1, callback);
|
|
20875
|
+
}, delay);
|
|
20876
|
+
retryState.set(topic, { timer, callback });
|
|
20877
|
+
}
|
|
20878
|
+
else {
|
|
20879
|
+
retryState.delete(topic);
|
|
20880
|
+
const ascError = error
|
|
20881
|
+
? new ASCError(error.message, 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */)
|
|
20882
|
+
: new ASCUnknownError(800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
20883
|
+
console.warn(`Failed to subscribe to topic ${topic} after ${MAX_RETRIES + 1} attempts`, ascError);
|
|
20884
|
+
callback === null || callback === void 0 ? void 0 : callback(ascError);
|
|
20885
|
+
}
|
|
20886
|
+
}
|
|
20887
|
+
else {
|
|
20888
|
+
retryState.delete(topic);
|
|
20889
|
+
console.log(`Subscribed to topic ${topic}`);
|
|
20890
|
+
callback === null || callback === void 0 ? void 0 : callback();
|
|
20891
|
+
}
|
|
20892
|
+
};
|
|
20893
|
+
if (mqttClient) {
|
|
20894
|
+
mqttClient.subscribe(topic, { qos: 0 }, callbackWrapper);
|
|
20895
|
+
}
|
|
20896
|
+
else {
|
|
20897
|
+
callbackWrapper(new Error('No connection to broker'), []);
|
|
20898
|
+
}
|
|
20899
|
+
}
|
|
20856
20900
|
return {
|
|
20857
20901
|
connect,
|
|
20858
20902
|
async disconnect() {
|
|
@@ -20881,33 +20925,18 @@ const createMqttTransport = (endpoint) => {
|
|
|
20881
20925
|
mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.removeAllListeners();
|
|
20882
20926
|
},
|
|
20883
20927
|
subscribe(topic, callback) {
|
|
20884
|
-
|
|
20885
|
-
|
|
20886
|
-
// In MQTT.js, when you subscribe to a topic with QoS 0, the granted parameter
|
|
20887
|
-
// in the callback will typically be empty or undefined
|
|
20888
|
-
if (error || ((_a = granted[0]) === null || _a === void 0 ? void 0 : _a.qos) === QOS_FAILURE_CODE) {
|
|
20889
|
-
const ascError = error
|
|
20890
|
-
? new ASCError(error.message, 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */)
|
|
20891
|
-
: // TODO throw the actual error, once BE can tell us the actual error code
|
|
20892
|
-
new ASCUnknownError(800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
20893
|
-
// Use warning lv instead of error lv to prevent misunderstanding of user
|
|
20894
|
-
console.warn(`Failed to subscribe to topic ${topic}`, ascError);
|
|
20895
|
-
callback === null || callback === void 0 ? void 0 : callback(ascError);
|
|
20896
|
-
}
|
|
20897
|
-
else {
|
|
20898
|
-
console.log(`Subscribed to topic ${topic}`);
|
|
20899
|
-
callback === null || callback === void 0 ? void 0 : callback();
|
|
20900
|
-
}
|
|
20901
|
-
};
|
|
20902
|
-
if (mqttClient) {
|
|
20903
|
-
mqttClient.subscribe(topic, { qos: 0 }, callbackWrapper);
|
|
20904
|
-
}
|
|
20905
|
-
else {
|
|
20906
|
-
callbackWrapper(new Error('No connection to broker'), []);
|
|
20907
|
-
}
|
|
20908
|
-
return () => mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.unsubscribe(topic);
|
|
20928
|
+
attemptSubscribe(topic, 0, callback);
|
|
20929
|
+
return () => this.unsubscribe(topic);
|
|
20909
20930
|
},
|
|
20910
20931
|
unsubscribe(topic) {
|
|
20932
|
+
var _a;
|
|
20933
|
+
const pending = retryState.get(topic);
|
|
20934
|
+
if (pending !== undefined) {
|
|
20935
|
+
clearTimeout(pending.timer);
|
|
20936
|
+
retryState.delete(topic);
|
|
20937
|
+
const cancellationError = new ASCError('Subscription retry cancelled due to unsubscribe call', 800000 /* Amity.ClientError.UNKNOWN_ERROR */, "error" /* Amity.ErrorLevel.ERROR */);
|
|
20938
|
+
(_a = pending.callback) === null || _a === void 0 ? void 0 : _a.call(pending, cancellationError);
|
|
20939
|
+
}
|
|
20911
20940
|
mqttClient === null || mqttClient === void 0 ? void 0 : mqttClient.unsubscribe(topic);
|
|
20912
20941
|
},
|
|
20913
20942
|
};
|
|
@@ -29295,7 +29324,7 @@ const getWatchSessionStorage = () => {
|
|
|
29295
29324
|
return storageInstance;
|
|
29296
29325
|
};
|
|
29297
29326
|
|
|
29298
|
-
const privateKey = "
|
|
29327
|
+
const privateKey = "MIIEpQIBAAKCAQEAwAEc/oZgYIvKSUG/C3mONYLR4ZPgAjMEX4bJ+xqqakUDRtqlNO+eZs2blQ1Ko0DBkqPExyQezvjibH5W2UZBV5RaBTlTcNVKTToMBEGesAfaEcM3qUyQHxdbFYZv6P4sb14dcwxTQ8usmaV8ooiR1Fcaso5ZWYcZ8Hb46FbQ7OoVumsBtPWwfZ4f003o5VCl6AIM6lcLv9UDLlFVYhE+PeXpRHtfWlGqxMvqC9oinlwhL6nWv6VjQXW4nhcib72dPBzfHT7k/PMKto2SxALYdb68ENiAGuJLWi3AUHSyYCJK2w7wIlWfJUAI0v26ub10IpExr6D5QuW2577jjP93iwIDAQABAoIBAFWfqXhwIIatkFY+9Z1+ZcbDQimgsmMIsUiQaX6Lk7e0cxOj6czDlxYtVtaPiNtow2pLkjNkjkCqiP7tEHnwdK9DvylZOTa2R15NJpK3WLcTqVIGhsn/FL5owfvFah6zSsmXZParZm5zY9NZE03ALZhOB9/cz0e3kf/EbpfeL2mW7MApyiUt5i09ycchroOpcWp73ipIxvgigtZyUGFmsQicWhUs28F0D7w4Qfk76yG3nqXeb+BAMhCaIaa/k/aAxhiZG/ygEQWQrcC8gfe+jyicMAQPDEVS9YuUMGsLjIjKuVLZzp2xirQnhc2i2zVNEIvG6soprPOBEMQugzrtX5ECgYEA3b7KAbBIbDl1e4ZSCWhHdHkiWVZHaopsR/LhqDDNhXjWjq3AesgV6k0j9EdziMn/HmmOso0bz99GTV3JZf4A9ztTLumJlkHbdVtlgOqSjrFLj12rH9KXTheyIhWSpUmm8+WB1xasFbqpvJaGo7F3pd2Fqj1XR4mp5BO7c/t7LJ0CgYEA3aouEzXQ9THRKYocdfY69EI1Il1t/d/RSqqd9BxEjxBgxkM13ZiYIn/R4WW/nCUrlmhxG44Aa2Gob4Ahfsui2xKTg/g/3Zk/rAxAEGkfOLGoenaJMD41fH4wUq3FRYwkvnaMb9Hd6f/TlBHslIRa2NN58bSBGJCyBP2b59+2+EcCgYEAixDVRXvV37GlYUOa/XVdosk5Zoe6oDGRuQm0xbNdoUBoZvDHDvme7ONWEiQha/8qtVsD+CyQ7awcPfb8kK9c0bBt+bTS6d4BkTcxkEkMgtrkBVR8Nqfu5jXsLH4VCv4G61zbMhZw8+ut+az5YX2yCN7Frj9sFlxapMRPQmzMEe0CgYEAumsAzM8ZqNv4mAK65Mnr0rhLj1cbxcKRdUYACOgtEFQpzxN/HZnTeFAe5nx3pI3uFlRHq3DFEYnT6dHMWaJQmAULYpVIwMi9L6gtyJ9fzoI6uqMtxRDMUqKdaSsTGOY/kJ6KhQ/unXi1K3XXjR+yd1+C0q+HUm1+CYxvrZYLfskCgYEArsEy+IQOiqniJ0NE2vVUF+UK/IRZaic9YKcpov5Ot7Vvzm/MnnW4N1ljVskocETBWMmPUvNSExVjPebi+rxd8fa5kY8BJScPTzMFbunZn/wjtGdcM10qdlVQ9doG61A/9P3ezFKCfS4AvF/H/59LcSx2Bh28fp3/efiVIOpVd4Y=";
|
|
29299
29328
|
/*
|
|
29300
29329
|
* The crypto algorithm used for importing key and signing string
|
|
29301
29330
|
*/
|