@microsoft/applicationinsights-dependencies-js 3.0.0-beta.2302-04 → 3.0.0-beta.2302-05
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/applicationinsights-dependencies-js.integrity.json +9 -9
- package/browser/applicationinsights-dependencies-js.js +126 -65
- package/browser/applicationinsights-dependencies-js.js.map +1 -1
- package/browser/applicationinsights-dependencies-js.min.js +2 -2
- package/browser/applicationinsights-dependencies-js.min.js.map +1 -1
- package/dist/applicationinsights-dependencies-js.d.ts +1 -1
- package/dist/applicationinsights-dependencies-js.js +126 -65
- package/dist/applicationinsights-dependencies-js.js.map +1 -1
- package/dist/applicationinsights-dependencies-js.min.js +2 -2
- package/dist/applicationinsights-dependencies-js.min.js.map +1 -1
- package/dist/applicationinsights-dependencies-js.rollup.d.ts +1 -1
- package/dist-esm/DependencyInitializer.js +1 -1
- package/dist-esm/DependencyListener.js +1 -1
- package/dist-esm/InternalConstants.js +1 -1
- package/dist-esm/__DynamicConstants.js +2 -1
- package/dist-esm/__DynamicConstants.js.map +1 -1
- package/dist-esm/ajax.js +20 -15
- package/dist-esm/ajax.js.map +1 -1
- package/dist-esm/ajaxRecord.js +1 -1
- package/dist-esm/ajaxUtils.js +1 -1
- package/dist-esm/applicationinsights-dependencies-js.js +1 -1
- package/package.json +3 -3
- package/src/__DynamicConstants.ts +1 -0
- package/src/ajax.ts +2 -1
- package/types/__DynamicConstants.d.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* Microsoft Application Insights XHR dependencies plugin, 3.0.0-beta.2302-
|
|
2
|
+
* Microsoft Application Insights XHR dependencies plugin, 3.0.0-beta.2302-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*
|
|
5
5
|
* Microsoft Application Insights Team
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Application Insights JavaScript SDK - Dependencies Plugin, 3.0.0-beta.2302-
|
|
2
|
+
* Application Insights JavaScript SDK - Dependencies Plugin, 3.0.0-beta.2302-05
|
|
3
3
|
* Copyright (c) Microsoft and contributors. All rights reserved.
|
|
4
4
|
*/
|
|
5
5
|
(function (global, factory) {
|
|
@@ -824,7 +824,7 @@
|
|
|
824
824
|
return new Date().getTime();
|
|
825
825
|
}
|
|
826
826
|
|
|
827
|
-
var _fnToString
|
|
827
|
+
var _fnToString;
|
|
828
828
|
var _objCtrFnString;
|
|
829
829
|
var _gblWindow;
|
|
830
830
|
function isPlainObject(value) {
|
|
@@ -837,8 +837,8 @@
|
|
|
837
837
|
var result = false;
|
|
838
838
|
if (value !== _gblWindow) {
|
|
839
839
|
if (!_objCtrFnString) {
|
|
840
|
-
_fnToString
|
|
841
|
-
_objCtrFnString = _fnToString
|
|
840
|
+
_fnToString = Function[PROTOTYPE].toString;
|
|
841
|
+
_objCtrFnString = _fnToString.call(ObjClass);
|
|
842
842
|
}
|
|
843
843
|
try {
|
|
844
844
|
var proto = objGetPrototypeOf(value);
|
|
@@ -847,7 +847,7 @@
|
|
|
847
847
|
if (objHasOwnProperty(proto, CONSTRUCTOR)) {
|
|
848
848
|
proto = proto[CONSTRUCTOR];
|
|
849
849
|
}
|
|
850
|
-
result = proto && typeof proto === FUNCTION && _fnToString
|
|
850
|
+
result = proto && typeof proto === FUNCTION && _fnToString.call(proto) === _objCtrFnString;
|
|
851
851
|
}
|
|
852
852
|
}
|
|
853
853
|
catch (ex) {
|
|
@@ -942,7 +942,9 @@
|
|
|
942
942
|
|
|
943
943
|
var createValueMap = createTypeMap;
|
|
944
944
|
|
|
945
|
+
var _DYN_TO_LOWER_CASE$2 = "toLowerCase";
|
|
945
946
|
var _DYN_LENGTH$2 = "length";
|
|
947
|
+
var _DYN_RD_ONLY = "rdOnly";
|
|
946
948
|
var _DYN_NOTIFY = "notify";
|
|
947
949
|
var _DYN_THROW_INTERNAL = "throwInternal";
|
|
948
950
|
var _DYN_SET_DF = "setDf";
|
|
@@ -980,7 +982,6 @@
|
|
|
980
982
|
var _DYN_REPLACE = "replace";
|
|
981
983
|
var _DYN_ENABLE_DEBUG_EXCEPTI5 = "enableDebugExceptions";
|
|
982
984
|
var _DYN_LOG_INTERNAL_MESSAGE = "logInternalMessage";
|
|
983
|
-
var _DYN_TO_LOWER_CASE$2 = "toLowerCase";
|
|
984
985
|
var _DYN_TYPE = "type";
|
|
985
986
|
var _DYN_HANDLER = "handler";
|
|
986
987
|
var _DYN_IS_CHILD_EVT = "isChildEvt";
|
|
@@ -1019,10 +1020,7 @@
|
|
|
1019
1020
|
var STR_GET_PERF_MGR = "getPerfMgr";
|
|
1020
1021
|
var STR_NOT_DYNAMIC_ERROR = "Not dynamic - ";
|
|
1021
1022
|
|
|
1022
|
-
var strToString = "toString";
|
|
1023
1023
|
var strGetPrototypeOf = "getPrototypeOf";
|
|
1024
|
-
var _fnToString = ObjClass$1[strToString];
|
|
1025
|
-
_fnToString.call(ObjClass$1);
|
|
1026
1024
|
var rCamelCase = /-([a-z])/g;
|
|
1027
1025
|
var rNormalizeInvalid = /([^\w\d_$])/g;
|
|
1028
1026
|
var rLeadingNumeric = /^(\d+[\w\d_$])/;
|
|
@@ -1156,7 +1154,7 @@
|
|
|
1156
1154
|
if (userAgentStr === void 0) { userAgentStr = null; }
|
|
1157
1155
|
if (!userAgentStr) {
|
|
1158
1156
|
var navigator_1 = getNavigator() || {};
|
|
1159
|
-
userAgentStr = navigator_1 ? (navigator_1
|
|
1157
|
+
userAgentStr = navigator_1 ? (navigator_1.userAgent || STR_EMPTY)[_DYN_TO_LOWER_CASE$2 ]() : STR_EMPTY;
|
|
1160
1158
|
}
|
|
1161
1159
|
var ua = (userAgentStr || STR_EMPTY)[_DYN_TO_LOWER_CASE$2 ]();
|
|
1162
1160
|
if (strContains(ua, strMsie)) {
|
|
@@ -1251,7 +1249,7 @@
|
|
|
1251
1249
|
}
|
|
1252
1250
|
|
|
1253
1251
|
var _objDefineProperty = ObjDefineProperty;
|
|
1254
|
-
var version = "3.0.0-beta.2302-
|
|
1252
|
+
var version = "3.0.0-beta.2302-05";
|
|
1255
1253
|
var instanceName = "." + newId(6);
|
|
1256
1254
|
var _dataUid = 0;
|
|
1257
1255
|
function _createAccessor(target, prop, value) {
|
|
@@ -1324,39 +1322,9 @@
|
|
|
1324
1322
|
return data;
|
|
1325
1323
|
}
|
|
1326
1324
|
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
if (source) {
|
|
1330
|
-
var target_1;
|
|
1331
|
-
if (isArray(source)) {
|
|
1332
|
-
target_1 = [];
|
|
1333
|
-
target_1[_DYN_LENGTH$2 ] = source[_DYN_LENGTH$2 ];
|
|
1334
|
-
}
|
|
1335
|
-
else if (isPlainObject(source)) {
|
|
1336
|
-
target_1 = {};
|
|
1337
|
-
}
|
|
1338
|
-
if (target_1) {
|
|
1339
|
-
objForEachKey(source, function (key, value) {
|
|
1340
|
-
target_1[key] = _cfgDeepCopy(value);
|
|
1341
|
-
});
|
|
1342
|
-
return target_1;
|
|
1343
|
-
}
|
|
1344
|
-
}
|
|
1345
|
-
return source;
|
|
1346
|
-
}
|
|
1347
|
-
function getDynamicConfigHandler(value) {
|
|
1348
|
-
if (value) {
|
|
1349
|
-
var handler = value[CFG_HANDLER_LINK] || value;
|
|
1350
|
-
if (handler.cfg && (handler.cfg === value || handler.cfg[CFG_HANDLER_LINK] === handler)) {
|
|
1351
|
-
return handler;
|
|
1352
|
-
}
|
|
1353
|
-
}
|
|
1354
|
-
return null;
|
|
1325
|
+
function _isConfigDefaults(value) {
|
|
1326
|
+
return (value && isObject(value) && (value.isVal || value.fb || objHasOwn(value, "v") || objHasOwn(value, "mrg") || objHasOwn(value, "ref") || value.set));
|
|
1355
1327
|
}
|
|
1356
|
-
function throwInvalidAccess(message) {
|
|
1357
|
-
throwTypeError("InvalidAccess:" + message);
|
|
1358
|
-
}
|
|
1359
|
-
|
|
1360
1328
|
function _getDefault(dynamicHandler, theConfig, cfgDefaults) {
|
|
1361
1329
|
var defValue;
|
|
1362
1330
|
var isDefaultValid = cfgDefaults.dfVal || isDefined;
|
|
@@ -1371,7 +1339,7 @@
|
|
|
1371
1339
|
if (isDefaultValid(fbValue)) {
|
|
1372
1340
|
defValue = fbValue;
|
|
1373
1341
|
}
|
|
1374
|
-
else {
|
|
1342
|
+
else if (dynamicHandler) {
|
|
1375
1343
|
fbValue = dynamicHandler.cfg[fallback];
|
|
1376
1344
|
if (isDefaultValid(fbValue)) {
|
|
1377
1345
|
defValue = fbValue;
|
|
@@ -1388,27 +1356,63 @@
|
|
|
1388
1356
|
}
|
|
1389
1357
|
return defValue;
|
|
1390
1358
|
}
|
|
1359
|
+
function _resolveDefaultValue(dynamicHandler, theConfig, cfgDefaults) {
|
|
1360
|
+
var theValue = cfgDefaults;
|
|
1361
|
+
if (cfgDefaults && _isConfigDefaults(cfgDefaults)) {
|
|
1362
|
+
theValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);
|
|
1363
|
+
}
|
|
1364
|
+
if (theValue) {
|
|
1365
|
+
if (_isConfigDefaults(theValue)) {
|
|
1366
|
+
theValue = _resolveDefaultValue(dynamicHandler, theConfig, theValue);
|
|
1367
|
+
}
|
|
1368
|
+
var newValue_1;
|
|
1369
|
+
if (isArray(theValue)) {
|
|
1370
|
+
newValue_1 = [];
|
|
1371
|
+
newValue_1[_DYN_LENGTH$2 ] = theValue[_DYN_LENGTH$2 ];
|
|
1372
|
+
}
|
|
1373
|
+
else if (isPlainObject(theValue)) {
|
|
1374
|
+
newValue_1 = {};
|
|
1375
|
+
}
|
|
1376
|
+
if (newValue_1) {
|
|
1377
|
+
objForEachKey(theValue, function (key, value) {
|
|
1378
|
+
if (value && _isConfigDefaults(value)) {
|
|
1379
|
+
value = _resolveDefaultValue(dynamicHandler, theConfig, value);
|
|
1380
|
+
}
|
|
1381
|
+
newValue_1[key] = value;
|
|
1382
|
+
});
|
|
1383
|
+
theValue = newValue_1;
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
return theValue;
|
|
1387
|
+
}
|
|
1391
1388
|
function _applyDefaultValue(dynamicHandler, theConfig, name, defaultValue) {
|
|
1392
1389
|
var isValid;
|
|
1393
1390
|
var setFn;
|
|
1394
1391
|
var defValue;
|
|
1395
1392
|
var cfgDefaults = defaultValue;
|
|
1396
|
-
|
|
1393
|
+
var mergeDf;
|
|
1394
|
+
var reference;
|
|
1395
|
+
var readOnly;
|
|
1396
|
+
if (_isConfigDefaults(cfgDefaults)) {
|
|
1397
1397
|
isValid = cfgDefaults.isVal;
|
|
1398
1398
|
setFn = cfgDefaults.set;
|
|
1399
|
+
readOnly = cfgDefaults[_DYN_RD_ONLY ];
|
|
1400
|
+
mergeDf = cfgDefaults.mrg;
|
|
1401
|
+
reference = cfgDefaults.ref;
|
|
1402
|
+
if (!reference && isUndefined(reference)) {
|
|
1403
|
+
reference = !!mergeDf;
|
|
1404
|
+
}
|
|
1399
1405
|
defValue = _getDefault(dynamicHandler, theConfig, cfgDefaults);
|
|
1400
1406
|
}
|
|
1401
1407
|
else {
|
|
1402
1408
|
defValue = defaultValue;
|
|
1403
1409
|
}
|
|
1404
|
-
var theValue
|
|
1410
|
+
var theValue;
|
|
1405
1411
|
var usingDefault = true;
|
|
1406
1412
|
var cfgValue = theConfig[name];
|
|
1407
1413
|
if (cfgValue || !isNullOrUndefined(cfgValue)) {
|
|
1408
1414
|
theValue = cfgValue;
|
|
1409
1415
|
usingDefault = false;
|
|
1410
|
-
}
|
|
1411
|
-
if (!usingDefault) {
|
|
1412
1416
|
if (isValid && theValue !== defValue && !isValid(theValue)) {
|
|
1413
1417
|
theValue = defValue;
|
|
1414
1418
|
usingDefault = true;
|
|
@@ -1418,10 +1422,61 @@
|
|
|
1418
1422
|
usingDefault = theValue === defValue;
|
|
1419
1423
|
}
|
|
1420
1424
|
}
|
|
1421
|
-
if (
|
|
1422
|
-
theValue
|
|
1425
|
+
if (!usingDefault) {
|
|
1426
|
+
if (isPlainObject(theValue) || isArray(defValue)) {
|
|
1427
|
+
if (mergeDf && defValue && (isPlainObject(defValue) || isArray(defValue))) {
|
|
1428
|
+
objForEachKey(defValue, function (dfName, dfValue) {
|
|
1429
|
+
_applyDefaultValue(dynamicHandler, theValue, dfName, dfValue);
|
|
1430
|
+
});
|
|
1431
|
+
}
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
else if (defValue) {
|
|
1435
|
+
theValue = _resolveDefaultValue(dynamicHandler, theConfig, defValue);
|
|
1436
|
+
}
|
|
1437
|
+
else {
|
|
1438
|
+
theValue = defValue;
|
|
1423
1439
|
}
|
|
1424
1440
|
dynamicHandler.set(theConfig, name, theValue);
|
|
1441
|
+
if (reference) {
|
|
1442
|
+
dynamicHandler.ref(theConfig, name);
|
|
1443
|
+
}
|
|
1444
|
+
if (readOnly) {
|
|
1445
|
+
dynamicHandler[_DYN_RD_ONLY ](theConfig, name);
|
|
1446
|
+
}
|
|
1447
|
+
}
|
|
1448
|
+
|
|
1449
|
+
var CFG_HANDLER_LINK = symbolFor("[[ai_dynCfg_1]]");
|
|
1450
|
+
function _cfgDeepCopy(source) {
|
|
1451
|
+
if (source) {
|
|
1452
|
+
var target_1;
|
|
1453
|
+
if (isArray(source)) {
|
|
1454
|
+
target_1 = [];
|
|
1455
|
+
target_1[_DYN_LENGTH$2 ] = source[_DYN_LENGTH$2 ];
|
|
1456
|
+
}
|
|
1457
|
+
else if (isPlainObject(source)) {
|
|
1458
|
+
target_1 = {};
|
|
1459
|
+
}
|
|
1460
|
+
if (target_1) {
|
|
1461
|
+
objForEachKey(source, function (key, value) {
|
|
1462
|
+
target_1[key] = _cfgDeepCopy(value);
|
|
1463
|
+
});
|
|
1464
|
+
return target_1;
|
|
1465
|
+
}
|
|
1466
|
+
}
|
|
1467
|
+
return source;
|
|
1468
|
+
}
|
|
1469
|
+
function getDynamicConfigHandler(value) {
|
|
1470
|
+
if (value) {
|
|
1471
|
+
var handler = value[CFG_HANDLER_LINK] || value;
|
|
1472
|
+
if (handler.cfg && (handler.cfg === value || handler.cfg[CFG_HANDLER_LINK] === handler)) {
|
|
1473
|
+
return handler;
|
|
1474
|
+
}
|
|
1475
|
+
}
|
|
1476
|
+
return null;
|
|
1477
|
+
}
|
|
1478
|
+
function throwInvalidAccess(message) {
|
|
1479
|
+
throwTypeError("InvalidAccess:" + message);
|
|
1425
1480
|
}
|
|
1426
1481
|
|
|
1427
1482
|
var arrayMethodsToPatch = [
|
|
@@ -1601,7 +1656,7 @@
|
|
|
1601
1656
|
set: cfgHandler.set.bind(cfgHandler),
|
|
1602
1657
|
setDf: cfgHandler[_DYN_SET_DF ].bind(cfgHandler),
|
|
1603
1658
|
ref: cfgHandler.ref.bind(cfgHandler),
|
|
1604
|
-
rdOnly: cfgHandler.
|
|
1659
|
+
rdOnly: cfgHandler[_DYN_RD_ONLY ].bind(cfgHandler)
|
|
1605
1660
|
});
|
|
1606
1661
|
}
|
|
1607
1662
|
catch (e) {
|
|
@@ -1751,7 +1806,7 @@
|
|
|
1751
1806
|
_a[_DYN_SET_DF ] = _applyDefaults,
|
|
1752
1807
|
_a[_DYN_WATCH ] = _watch,
|
|
1753
1808
|
_a.ref = _ref,
|
|
1754
|
-
_a
|
|
1809
|
+
_a[_DYN_RD_ONLY ] = _rdOnly,
|
|
1755
1810
|
_a._block = _block,
|
|
1756
1811
|
_a);
|
|
1757
1812
|
objDefineProp(cfgHandler, "uid", (_b = {},
|
|
@@ -3563,6 +3618,7 @@
|
|
|
3563
3618
|
var _DYN_PERF_MARK = "perfMark";
|
|
3564
3619
|
var _DYN_NAME = "name";
|
|
3565
3620
|
var _DYN_PERF_TIMING = "perfTiming";
|
|
3621
|
+
var _DYN_EXCEPTION = "exception";
|
|
3566
3622
|
var _DYN_AJAX_DIAGNOSTICS_MES16 = "ajaxDiagnosticsMessage";
|
|
3567
3623
|
var _DYN_CORRELATION_CONTEXT = "correlationContext";
|
|
3568
3624
|
var _DYN_AJAX_TOTAL_DURATION = "ajaxTotalDuration";
|
|
@@ -3835,6 +3891,7 @@
|
|
|
3835
3891
|
return _global[STR_FETCH];
|
|
3836
3892
|
}
|
|
3837
3893
|
function _supportsAjaxMonitoring(ajaxMonitorInstance) {
|
|
3894
|
+
var _a;
|
|
3838
3895
|
var result = false;
|
|
3839
3896
|
if (isXhrSupported()) {
|
|
3840
3897
|
var proto = XMLHttpRequest[strShimPrototype];
|
|
@@ -3856,9 +3913,9 @@
|
|
|
3856
3913
|
}
|
|
3857
3914
|
catch (e) {
|
|
3858
3915
|
result = false;
|
|
3859
|
-
_throwInternalCritical(ajaxMonitorInstance, 15 , "Failed to enable XMLHttpRequest monitoring, extension is not supported", {
|
|
3860
|
-
|
|
3861
|
-
|
|
3916
|
+
_throwInternalCritical(ajaxMonitorInstance, 15 , "Failed to enable XMLHttpRequest monitoring, extension is not supported", (_a = {},
|
|
3917
|
+
_a[_DYN_EXCEPTION ] = dumpObj(e),
|
|
3918
|
+
_a));
|
|
3862
3919
|
}
|
|
3863
3920
|
}
|
|
3864
3921
|
return result;
|
|
@@ -3882,10 +3939,12 @@
|
|
|
3882
3939
|
}
|
|
3883
3940
|
function _createErrorCallbackFunc(ajaxMonitorInstance, internalMessage, message) {
|
|
3884
3941
|
return function (args) {
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3942
|
+
var _a;
|
|
3943
|
+
_throwInternalCritical(ajaxMonitorInstance, internalMessage, message, (_a = {
|
|
3944
|
+
ajaxDiagnosticsMessage: _getFailedAjaxDiagnosticsMessage(args[_DYN_INST ])
|
|
3945
|
+
},
|
|
3946
|
+
_a[_DYN_EXCEPTION ] = dumpObj(args.err),
|
|
3947
|
+
_a));
|
|
3889
3948
|
};
|
|
3890
3949
|
}
|
|
3891
3950
|
function _indexOf(value, match) {
|
|
@@ -4454,7 +4513,7 @@
|
|
|
4454
4513
|
if (!exceptionText || _indexOf(exceptionText[_DYN_TO_LOWER_CASE ](), "c00c023f") === -1) {
|
|
4455
4514
|
_throwInternalCritical(_self, 16 , ERROR_HEADER + " 'readystatechange' event handler" + ERROR_POSTFIX, (_a = {},
|
|
4456
4515
|
_a[_DYN_AJAX_DIAGNOSTICS_MES16 ] = _getFailedAjaxDiagnosticsMessage(xhr),
|
|
4457
|
-
_a
|
|
4516
|
+
_a[_DYN_EXCEPTION ] = exceptionText,
|
|
4458
4517
|
_a));
|
|
4459
4518
|
}
|
|
4460
4519
|
}
|
|
@@ -4563,7 +4622,7 @@
|
|
|
4563
4622
|
catch (e) {
|
|
4564
4623
|
_throwInternalWarning(_self, 18 , CORRELATION_HEADER_ERROR, (_a = {},
|
|
4565
4624
|
_a[_DYN_AJAX_DIAGNOSTICS_MES16 ] = _getFailedAjaxDiagnosticsMessage(xhr),
|
|
4566
|
-
_a
|
|
4625
|
+
_a[_DYN_EXCEPTION ] = dumpObj(e),
|
|
4567
4626
|
_a));
|
|
4568
4627
|
}
|
|
4569
4628
|
}
|
|
@@ -4728,16 +4787,18 @@
|
|
|
4728
4787
|
});
|
|
4729
4788
|
}
|
|
4730
4789
|
function _getFetchCorrelationContext(response) {
|
|
4790
|
+
var _a;
|
|
4731
4791
|
if (response && response[_DYN_HEADERS ]) {
|
|
4732
4792
|
try {
|
|
4733
4793
|
var responseHeader = response[_DYN_HEADERS ].get(RequestHeaders[0 ]);
|
|
4734
4794
|
return correlationIdGetCorrelationContext(responseHeader);
|
|
4735
4795
|
}
|
|
4736
4796
|
catch (e) {
|
|
4737
|
-
_throwInternalWarning(_self, 18 , CORRELATION_HEADER_ERROR, {
|
|
4738
|
-
|
|
4739
|
-
|
|
4740
|
-
|
|
4797
|
+
_throwInternalWarning(_self, 18 , CORRELATION_HEADER_ERROR, (_a = {
|
|
4798
|
+
fetchDiagnosticsMessage: _getFailedFetchDiagnosticsMessage(response)
|
|
4799
|
+
},
|
|
4800
|
+
_a[_DYN_EXCEPTION ] = dumpObj(e),
|
|
4801
|
+
_a));
|
|
4741
4802
|
}
|
|
4742
4803
|
}
|
|
4743
4804
|
}
|