{"ScriptPreparationCode":"function hasProp(obj, prop, type) {\r\n return (prop in obj \u0026\u0026 typeof obj[prop] === type);\r\n}\r\n\r\nfunction hasProps(obj, schema) {\r\n for (const [prop, type] of Object.entries(schema)) {\r\n if (!(prop in obj \u0026\u0026 typeof obj[prop] === type)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nfunction hasProps2(obj, schema) {\r\n const entries = Object.entries(schema);\r\n for (let i = 0, length = entries.length; i \u003C length; \u002B\u002Bi) {\r\n if (!(entries[i][0] in obj \u0026\u0026 (entries[i][1] === \u0027array\u0027 ? Array.isArray(obj[entries[i][0]]) : typeof obj[entries[i][0]] === entries[i][1]))) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n\r\nconst testTypes = [\u0027undefined\u0027, \u0027object\u0027, \u0027boolean\u0027, \u0027number\u0027, \u0027bigint\u0027, \u0027string\u0027, \u0027symbol\u0027, \u0027function\u0027, \u0027array\u0027];\r\n\r\nconst o = {\r\n a: undefined,\r\n b: {},\r\n c: true,\r\n c2: false,\r\n d: -34,\r\n e: BigInt(56),\r\n f: \u0027yass\u0027,\r\n f2: \u0027\u0027,\r\n g: Symbol(\u0027queen\u0027),\r\n h: (a, b) =\u003E a \u002B b.length,\r\n i: [1, 32],\r\n};\r\n\r\nfunction cartesianProduct(...allEntries) {\r\n return allEntries.reduce((results, entries) =\u003E results\r\n .map((result) =\u003E entries.map((entry) =\u003E [...result, entry]))\r\n .reduce((subResults, result) =\u003E [...subResults, ...result], []), [[]]);\r\n}\r\nconst testParams = cartesianProduct(Object.keys(o), testTypes);\r\n\r\nconst schema = {\r\n a: \u0027undefined\u0027,\r\n f: \u0027string\u0027,\r\n g: \u0027symbol\u0027,\r\n i: \u0027object\u0027\r\n}\r\n\r\nfunction hp() {\r\n if (Math.round(Math.random())) {\r\n return hasProp(o, \u0022a\u0022, \u0027undefined\u0027) \u0026\u0026 hasProp(o, \u0022f\u0022, \u0027string\u0027) \u0026\u0026 hasProp(o, \u0022g\u0022, \u0027symbol\u0027) \u0026\u0026 hasProp(o, \u0022i\u0022, \u0027object\u0027);\r\n } else {\r\n return true\r\n }\r\n}\r\n\r\n\r\n\r\nfunction hps() {\r\n if (Math.round(Math.random())) {\r\n return hasProps(o, schema);\r\n } else {\r\n return true\r\n }\r\n}\r\n\r\nfunction ref() {\r\n if (Math.round(Math.random())) {\r\n return \u0022a\u0022 in o \u0026\u0026 typeof o.a === \u0027undefined\u0027 \u0026\u0026 \u0022f\u0022 in o \u0026\u0026 typeof o.f === \u0027string\u0027 \u0026\u0026 \u0022g\u0022 in o \u0026\u0026 typeof o.g === \u0027symbol\u0027 \u0026\u0026 \u0022i\u0022 in o \u0026\u0026 typeof o.i === \u0027object\u0027;\r\n } else {\r\n return true\r\n }\r\n}","TestCases":[{"Name":"hp","Code":"let r1 = false;\r\n\r\nr1 = hp();\r\n\r\nconst r = \u0060${r1} \u002B 4\u0060;","IsDeferred":false},{"Name":"hps","Code":"let r2 = false;\r\n\r\nr2 = hps();\r\n\r\nconst r = \u0060${r2} \u002B 4\u0060;","IsDeferred":false},{"Name":"ref","Code":"let r3 = false;\r\n\r\nr3 = ref();\r\n\r\nconst r = \u0060${r3} \u002B 4\u0060;","IsDeferred":false}]}