function deepCopy(o) {
if ((typeof o !== "object" || o === null) && !(o instanceof Function)) return o;
let n, keys;
const c = o.constructor;
if (o[Symbol.iterator] instanceof Function) {
const l = o.length;
n = (new c(l));
switch (c) {
case Set:
for (let e of o) n.add(deepCopy(e));
break;
case Map:
for (let [key, value] of o) n.set(key, deepCopy(value));
break;
}
for (let i of Object.keys(o)) n[i] = deepCopy(o[i]);
} else {
if (c !== Object) {
switch (c) {
case Function:
let str = o.toString();
if(/ \[native code\] /.exec(str) === null){
let args=/^.*?\((.*?)\)/.exec(str)[1];
let func=/^.*?{(.*)}/.exec(str)[1];
n=new c(args,func);
}else{
n=o;
}
break;
case RegExp:
n = new c(o.valueOf());
break;
case Date:
n = new c(o);
break;
case ArrayBuffer:
n = new c((new Int8Array(o)).length);
break;
default:
n = o;
}
keys = Object.keys(o);
} else {
n = {};
keys = Object.getOwnPropertyNames(o);
}
for (let i of keys) n[i] = deepCopy(o[i]);
}
for (let i of Object.getOwnPropertySymbols(o)) n[i] = deepCopy(o[i]);
return n;
}
function recursiveDeepCopy(obj) {
return Object.keys(obj).reduce((v, d) => Object.assign(v, {
[d]: (obj[d].constructor === Object) ? recursiveDeepCopy(obj[d]) : obj[d]
}), {});
}
function jsonDeepCopy(o) {
return JSON.parse(JSON.stringify(o));
}
var dimensions = [{
"dimensions": [{
"runtime": {
"common": {
"client": null,
"server": null
}
}
}, {
"device": {
"android": null,
"blackberry": null,
"iemobile": null,
"iphone": null,
"ipad": null,
"kindle": null,
"opera-mini": null,
"palm": null
}
}, {
"environment": {
"development": {
"dev": null,
"test": null
},
"production": {
"stage": null,
"prod": null
}
}
}, {
"lang": {
"ar": {
"ar-JO": null,
"ar-MA": null,
"ar-SA": null,
"ar-EG": null
},
"bn": {
"bn-IN": null
},
"ca": {
"ca-ES": null
},
"cs": {
"cs-CZ": null
},
"da": {
"da-DK": null
},
"de": {
"de-AT": null,
"de-DE": null
},
"el": {
"el-GR": null
},
"en": {
"en-AU": null,
"en-BG": null,
"en-CA": null,
"en-GB": null,
"en-GY": null,
"en-HK": null,
"en-IE": null,
"en-IN": null,
"en-MY": null,
"en-NZ": null,
"en-PH": null,
"en-SG": null,
"en-US": null,
"en-ZA": null
},
"es": {
"es-AR": null,
"es-BO": null,
"es-CL": null,
"es-CO": null,
"es-EC": null,
"es-ES": null,
"es-MX": null,
"es-PE": null,
"es-PY": null,
"es-US": null,
"es-UY": null,
"es-VE": null
},
"fi": {
"fi-FI": null
},
"fr": {
"fr-BE": null,
"fr-CA": null,
"fr-FR": null,
"fr-GF": null
},
"hi": {
"hi-IN": null
},
"hu": {
"hu-HU": null
},
"id": {
"id-ID": null
},
"it": {
"it-IT": null
},
"ja": {
"ja-JP": null
},
"kn": {
"kn-IN": null
},
"ko": {
"ko-KR": null
},
"ml": {
"ml-IN": null
},
"mr": {
"mr-IN": null
},
"ms": {
"ms-MY": null
},
"nb": {
"nb-NO": null
},
"nl": {
"nl-BE": null,
"nl-NL": null,
"nl-SR": null
},
"pl": {
"pl-PL": null
},
"pt": {
"pt-BR": null
},
"ro": {
"ro-RO": null
},
"ru": {
"ru-RU": null
},
"sv": {
"sv-SE": null
},
"ta": {
"ta-IN": null
},
"te": {
"te-IN": null
},
"th": {
"th-TH": null
},
"tr": {
"tr-TR": null
},
"vi": {
"vi-VN": null
},
"zh": {
"zh-Hans": {
"zh-Hans-CN": null
},
"zh-Hant": {
"zh-Hant-HK": null,
"zh-Hant-TW": null
}
}
}
}]
}]