{"ScriptPreparationCode":"function equal(a, b) {\r\n if (a === b) return true;\r\n\r\n if (a \u0026\u0026 b \u0026\u0026 typeof a == \u0027object\u0027 \u0026\u0026 typeof b == \u0027object\u0027) {\r\n if (a.constructor !== b.constructor) return false;\r\n\r\n var length, i, keys;\r\n if (Array.isArray(a)) {\r\n length = a.length;\r\n if (length != b.length) return false;\r\n for (i = length; i-- !== 0;)\r\n if (!equal(a[i], b[i])) return false;\r\n return true;\r\n }\r\n\r\n\r\n\r\n if (a.constructor === RegExp) return a.source === b.source \u0026\u0026 a.flags === b.flags;\r\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\r\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\r\n\r\n keys = Object.keys(a);\r\n length = keys.length;\r\n if (length !== Object.keys(b).length) return false;\r\n\r\n for (i = length; i-- !== 0;)\r\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\r\n\r\n for (i = length; i-- !== 0;) {\r\n var key = keys[i];\r\n\r\n if (key === \u0027_owner\u0027 \u0026\u0026 a.$$typeof) {\r\n // React-specific: avoid traversing React elements\u0027 _owner.\r\n // _owner contains circular references\r\n // and is not needed when comparing the actual elements (and not their owners)\r\n continue;\r\n }\r\n\r\n if (!equal(a[key], b[key])) return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // true if both NaN, false otherwise\r\n return a!==a \u0026\u0026 b!==b;\r\n};\r\n\r\n// 1 level deep\r\nwindow.foo1 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\nwindow.bar1 = { a: \u0027test2\u0027, b: 3, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\n\r\n// 2 levels deep\r\nwindow.foo2 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\nwindow.bar2 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test2\u0027, b: 3, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\n\r\n// 3 levels deep\r\nwindow.foo3 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\nwindow.bar3 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test2\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\n\r\n// 3 levels deep\r\nwindow.foo3 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\nwindow.bar3 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test2\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\n\r\n// 3 levels deep (array)\r\nwindow.foo4 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027] } } };\r\nwindow.bar4 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test2\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027] } } };\r\n\r\n// 10 levels deep (array)\r\nwindow.foo5 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027] } } } } } } } } } };\r\nwindow.bar5 = { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: { a: \u0027test1\u0027, b: 2, c: [\u0027a\u0027, \u0027b\u0027, \u0027c\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027d\u0027], d: { a: \u0027test1\u0027, b: 4, c: [\u0027a\u0027, \u0027b\u0027, \u0027e\u0027] } } } } } } } } } };\r\n\r\n\r\nconsole.log(\u0027Preparing...\u0027);\r\nconsole.log(\u00271 level deep: \u0027, _.isEqual(window.foo1, window.bar1) === equal(window.foo1, window.bar1));\r\nconsole.log(\u00272 level deep: \u0027, _.isEqual(window.foo2, window.bar2) === equal(window.foo2, window.bar2));\r\nconsole.log(\u00273 level deep: \u0027, _.isEqual(window.foo3, window.bar3) === equal(window.foo3, window.bar3));\r\nconsole.log(\u00273 level deep (array): \u0027, _.isEqual(window.foo4, window.bar4) === equal(window.foo4, window.bar4));\r\nconsole.log(\u002710 level deep (array): \u0027, _.isEqual(window.foo5, window.bar5) === equal(window.foo5, window.bar5));\r\n","TestCases":[{"Name":"_.isEqual Level 1","Code":"_.isEqual(window.foo1, window.bar1)","IsDeferred":false},{"Name":"equal Level 1","Code":"equal(window.foo1, window.bar1)","IsDeferred":false},{"Name":"_.isEqual Level 2","Code":"_.isEqual(window.foo2, window.bar2)","IsDeferred":false},{"Name":"equal Level 2","Code":"equal(window.foo2, window.bar2)","IsDeferred":false},{"Name":"_.isEqual Level 3","Code":"_.isEqual(window.foo3, window.bar3)","IsDeferred":false},{"Name":"equal Level 3","Code":"equal(window.foo3, window.bar3)","IsDeferred":false},{"Name":"_.isEqual Level 3 (array)","Code":"_.isEqual(window.foo4, window.bar4)","IsDeferred":false},{"Name":"equal Level 3 (array)","Code":"equal(window.foo4, window.bar4)","IsDeferred":false},{"Name":"_.isEqual Level 10 (array)","Code":"_.isEqual(window.foo5, window.bar5)","IsDeferred":false},{"Name":"equal Level 10 (array)","Code":"equal(window.foo5, window.bar5)","IsDeferred":false}]}